2006年07月14日(Fri) 自転車で出ようとすると雨模様 [長年日記]
● 結局降らなかったけどさ。
● Failmallocを使ってるとassertが不自由になる
昨日の続き。
手元で作っているソフトでは、テストケースでmallocする場合に、
などとしていることが沢山ありました。実際に運用されるコードではassert()の代わりにもうちょっと親切な死に方をさせてる(つもり)。
ところが、failmallocを使うとどうも様子がおかしいです。ちゃんとassertしてくれないように見える。そしてわかったことは、
こういうコードが、failmallocが無い場合
fail: fail.c:8: main: Assertion `0' failed.
と表示するのに対して、failmallocがある場合
Unexpected error.
と表示するのです。そうか。assertの中でもmallocしてるんだね。
少なくとも手元では、fputs(3)はfailmallocの影響をうけないようなので、テストケースのmallocの後のassertはfputsとexitにしてみようかな。
(追記) 静的(Cのコード)にあらかじめ取ってある領域にメッセージをsnprintfするのもいいですね。
● [memo] いやなブログ: gdb tips
--argsオプションはうれしいな < man読め、と思ったがinfoにしか書いてなかった。
最近のツッコまれどころ