C言語関係掲示板

過去ログ

No747 freeの仕方

[戻る] [ホームページ]
No.9297

freeの仕方
投稿者---パイレーツ(2003/09/14 22:33:50)


プログラムを作ったら、ポインタの配列にmallocで確保された領域
とそうではない領域を指すポインタが混在してしまいました。
mallocで確保された領域をfreeしたいと思うのですが、
どうすればよいでしょうか。malloc時に配列の添え字を
保存する方法ならば思い浮かぶのですが、面倒で
スマートでないように思えます。
mallocで確保された領域には確保した領域以外に
制御データが保存されているらしいですがこれを使って
何とかならないでしょうか?

No.9299

Re:freeの仕方
投稿者---kikk(2003/09/15 01:04:22)


ども。


>プログラムを作ったら、ポインタの配列にmallocで確保された領域
>とそうではない領域を指すポインタが混在してしまいました。

そうではない領域が何を指しているかによると思います。

1. 静的な変数を指している場合
その変数が見えればアドレスで判別可能。見えない場合は3へ。
2. 有効な領域を指していない場合(ポインタの配列を初期化していない場合)
NULLで初期化する。なお、free(NULL)は何もしない。
3. 上記以外
malloc()時に添え字を保存。スタックか、フラグテーブルを使う等、
お好きな方法を。

>mallocで確保された領域には確保した領域以外に
>制御データが保存されているらしいですがこれを使って
>何とかならないでしょうか?

何とかなるかもしれませんが、処理系に依存するので
他の方法で何とかしたほうがよろしいかと。


では。