System.TObject.Free
Delphi
procedure Free;
C++
void __fastcall Free();
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
procedure function |
public | System.pas systobj.h |
System | TObject |
説明
オブジェクトを破棄し,必要ならば関連付けられているメモリを解放します。
Free メソッドを呼び出すと,オブジェクトを破棄できます。Free メソッドは,オブジェクトの参照が nil ではない場合,自動的にデストラクタを呼び出します。実行時にインスタンス化されたオブジェクトは,オーナーを持っていない場合,Free メソッドを呼び出して破棄しなければなりません。結果として,オブジェクトが適切に処理され,メモリが解放されます。Destroy メソッドとは異なり,オブジェクトが nil の場合でも Free メソッドはエラーにはなりません。このため,オブジェクトが初期化されていない場合に Free メソッドを呼び出してもエラーにはなりません。
1 つのコンポーネントで Free メソッドを呼び出すと,そのコンポーネントが所有するすべてのコンポーネント,つまりコンポーネントリスト内のすべてのコンポーネントで Free メソッドが呼び出されます。フォームは設計モードで作成されたすべてのコントロールと非ビジュアルコンポーネントを所有するので,フォームが解放されると,これらすべてのコンポーネントも自動的に解放されます。デフォルトでは,すべてのフォームが Application オブジェクトによって所有されているため,アプリケーションが終了すると,Application オブジェクトが解放され,それによってすべてのフォームが解放されます。コンポーネントでないオブジェクトの場合,または,nil オーナーによって作成されたコンポーネントの場合は,そのオブジェクトを終了したら,必ず Free メソッドを呼び出すようにしてください。そうしないと,アプリケーションが終了するまで,割り当てられてたメモリは使用できません。
フォームを解放するには,Release メソッドを使用します。Release メソッドは,そのフォームのイベントハンドラと,フォームに含まれているコンポーネントのイベントハンドラが,すべて実行を完了した後で,フォームを破棄し,フォームに割り当てられていたメモリを解放します。