2003年 02月14日(Fri) バレンタインデー [長年日記]
_ 私の中では「新GBA」発売日&「逆転裁判」再販日なんですけどね(^^;
_ 新人教育(C言語)中に話題になった事。realloc()がNULLを返した場合、それまで割り当てられていたメモリ領域はどうなるか?
_ 手元の「新ANSI C言語辞典(技術評論社)」には、『領域が割り付けられなかった場合にも、オブジェクトの内容は変わらない』とあります。一方同じくANSI準拠のはずの「独習C(翔泳社)」では『元のブロックは解放されて内容は失われてしまいます。』と書いてあったり。
_ 解放されない場合は明示的にfree()してやらないとメモリリークを引き起こす可能性がありますね。でもANSIではfree(NULL)が許されてるので、どちらにしてもfree()してやればいいのか。
_ 調べてみたところ、大抵の処理系/コンパイラでは『解放されない』ようです。っていうか解放されちゃう処理系/コンパイラを誰か教えてください(^^; あとANSIでは実際どう定義されているのか? も重要ですね。こちらも知っている方がいましたら教えてください。