System.TObject.Free

提供: RAD Studio API Documentation
移動先: 案内検索

Delphi

procedure Free;

C++

void __fastcall Free(void);

プロパティ

種類 可視性 ソース ユニット
procedure
function
public
System.pas
systobj.h
System TObject

説明

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

Free メソッドを呼び出すと,オブジェクトを破棄できます。Free メソッドは,オブジェクトの参照が nil ではない場合,自動的にデストラクタを呼び出します。実行時にインスタンス化されたオブジェクトは,オーナーを持っていない場合,Free メソッドを呼び出して破棄しなければなりません。結果として,オブジェクトが適切に処理され,メモリが解放されます。Destroy メソッドとは異なり,オブジェクトが nil の場合でも Free メソッドはエラーにはなりません。このため,オブジェクトが初期化されていない場合に Free メソッドを呼び出してもエラーにはなりません。

1 つのコンポーネントで Free メソッドを呼び出すと,そのコンポーネントが所有するすべてのコンポーネント,つまりコンポーネントリスト内のすべてのコンポーネントで Free メソッドが呼び出されます。フォームは設計モードで作成されたすべてのコントロールと非ビジュアルコンポーネントを所有するので,フォームが解放されると,これらすべてのコンポーネントも自動的に解放されます。デフォルトでは,すべてのフォームが Application オブジェクトによって所有されているため,アプリケーションが終了すると,Application オブジェクトが解放され,それによってすべてのフォームが解放されます。コンポーネントでないオブジェクトの場合,または,nil オーナーによって作成されたコンポーネントの場合は,そのオブジェクトを終了したら,必ず Free メソッドを呼び出すようにしてください。そうしないと,アプリケーションが終了するまで,割り当てられてたメモリは使用できません。

警告: コンポーネントのイベントハンドラ内で明示的にコンポーネントを解放したり,コンポーネントが所有するか,またはコンポーネントに含まれているコンポーネントのイベントハンドラからコンポーネントを解放しないようにしてください。たとえば,ボタンの OnClick イベントハンドラでボタンまたはそのボタンを所有するフォームを解放しないでください。

フォームを解放するには,Release メソッドを使用します。Release メソッドは,そのフォームのイベントハンドラと,フォームに含まれているコンポーネントのイベントハンドラが,すべて実行を完了した後で,フォームを破棄し,フォームに割り当てられていたメモリを解放します。

メモ: C++ では,オブジェクトを破棄するのに Free メソッドを使用しないでください。delete キーワードを使用します。

関連項目