reallocについて
reallocでのメモリの割り当てで、
buf = realloc( buf, 1024 );
のように書かれているソースがありますが、この書き方のように
reallocの第1引数とreallocの帰り値を受ける変数を同じにすると
reallocのエラーに対応できませんよね?
それとは別に、buf = (char*)malloc(4);で下図のようになったとすると
×××××××××××××××○○○○×
あいうえおかきくけこさしすせそたちつてと
その後の buf = realloc( buf, 8 );では、[たちつて]に
かぶることなく下図のようになると思います。
三角の部分は丸の部分にデータをコピーするために
完全には開放しないはずですよね。
×○○○○○○○○××××××△△△△×
あいうえおかきくけこさしすせそたちつてと
ここからさらにreallocすると、三角だった部分は下図のように
reallocによる新しい領域に使われる可能性はありますか?
buf = realloc( buf, 9 );
×△△△△△△△△×○○○○○○○○○×
あいうえおかきくけこさしすせそたちつてと
図のひらがなはアドレスを意味しています。
定幅フォントのエディタにコピーして見ていただきたいです。
お礼
うーんやはり厳しいですね。 どうもありがとうございました。