オブジェクトの解放について

解決


前忠  2006-06-04 15:58:32  No: 22003  IP: 192.*.*.*

1つ疑問になったので質問させて頂きます。
動的に生成したオブジェクトを解放する時は、Freeを使用すると思いますが、たまにFreeAndNilを使用してるプログラムを見ます。
どちらを使用するのが正しいのでしょうか?

ヘルプを見る限りでは、FreeAndNilの方がnilも代入しているので良さそうな感じがするのですが。

Image1 := TImage.Create(Self);
Image1.Free;


-- Delphi7 Helpより --

[Free]
Free メソッドは,オブジェクトを破棄し,必要ならば関連付けられているメモリを解放します。

[FreeAndNil]
FreeAndNil 手続きは,オブジェクト参照を解放して,nil(Delphi)または NULL(C++)に置き換えます。

編集 削除
えーと  2006-06-04 18:46:17  No: 22004  IP: 192.*.*.*

場合によりけりです。

ただ解放するだけなら Free で十分です。
あるオブジェクトが解放されているかどうかをプログラムで確認する必要が
ある場合は、FreeAndNil() を使います。そうすれば、nil であれば解放されて
いることが保証されますから。

編集 削除
前忠  2006-06-04 23:30:03  No: 22005  IP: 192.*.*.*

えーとさん、さっそくの返信ありがとうございます。

>ただ解放するだけなら Free で十分です。
そうなんですね。そこまで気にせず今まで通りFreeを使用することにします。

いつも、ありがとうございます。

編集 削除
前忠  2006-06-04 23:31:18  No: 22006  IP: 192.*.*.*

解決にするのを忘れていました!

編集 削除