4

私は Delphi を初めて使用し、メモリ管理の処理方法を理解しようとしています。動的に割り当てられてリストに入れられる TFileData クラスがあります。ファイルからデータをリロードするたびに、古いオブジェクトを解放して新しいオブジェクトを割り当てる必要があります。

割り当てるには、次の関数を使用します。

function TImportXmlForm.GetLanguageFileData: TList<TFileData>;
begin
  if FAllFiles = nil then
    FAllFiles := TList<TFileData>.Create;
  Result := FAllFiles;
end{function};

割り当てを解除するには:

if Assigned(FAllFiles) then
begin
  while FAllFiles.Count > 0 do
  begin
    FAllFiles.Items[0].Free;
    FAllFiles.Delete(0);
  end;
  FAllFiles.Free;
  FAllFiles := nil;
end{if};

この種のプログラミング パターンの「ベスト プラクティス」は何ですか?

4

1 に答える 1

9

TObjectList<T>の代わりに使用しTList<T>ます。

デフォルトでTObjectList<T>は、オブジェクトをリストから削除するとそのオブジェクトが解放され、objectlist 自体を解放するとすべてのオブジェクトが解放されます。これはコンストラクターのパラメーターによって制御されます。OwnsObjectsこれはデフォルトでは ですTrue

于 2013-02-15T10:18:40.807 に答える