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

解決


前忠  2006-06-05 00:58:32  No: 22003

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

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

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

-- Delphi7 Helpより --

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

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


えーと  2006-06-05 03:46:17  No: 22004

場合によりけりです。

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


前忠  2006-06-05 08:30:03  No: 22005

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

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

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


前忠  2006-06-05 08:31:18  No: 22006

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加