System.SysUtils.FreeAndNil

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

Delphi

procedure FreeAndNil(const [ref] Obj: TObject);

プロパティ

種類 可視性 ソース ユニット
procedure public System.SysUtils.pas System.SysUtils System.SysUtils


説明

オブジェクト参照を解放して、nil(Delphi の場合)または NULL(C++ の場合)に置き換えます。

FreeAndNil を使用すると、変数が参照するオブジェクトを解放したのち、変数が nil (Delphi) か NULL (C++) になっていることを保証します。Obj パラメータには、オブジェクトを表す任意の変数を渡します。

警告: Obj は TObject の下位クラスのインスタンスでなければなりません。

C++ は、FreeAndNil の 2 つのテンプレート実装を提供しています。これは、両方 --- 新しく改良されたものと、以前のもの --- の両方の使用パータンが使えるようになっています。古い使用法は、Delphi スタイルのクラス ポインタを渡す必要がある場合にで、次のようになります:

  TButton* button1;
  ....
  FreeAndNil(&button1);

RAD Studio 10.4 では、Delphi スタイルのクラス ポインタへの参照を渡すことも可能になりました。次のようになります:

  TButton *button1 = <initialization>;
  ....
  FreeAndNil(button1); // No need to take the address of 'button1'
メモ: このロジックは、static_assert を使用しており、パラメータが FreeAndNil へ、TObject から派生した型へのポインタとして渡されることを保証します。次のコンパイラ エラーが表示された場合:
"'T' must derive from System::TObject"
これは、FreeAndNil が不正なパラメータで呼び出されたことを意味します。

関連項目

コード サンプル