Dav*_*vid 4 delphi tlist dynamic-memory-allocation
我是Delphi的新手,并试图弄清楚如何处理内存管理.我有一个类TFileData,它被动态分配并放入一个列表中.每次我从文件重新加载数据时,我都需要释放旧对象并分配新对象.
分配我使用这个功能:
function TImportXmlForm.GetLanguageFileData: TList<TFileData>;
begin
if FAllFiles = nil then
FAllFiles := TList<TFileData>.Create;
Result := FAllFiles;
end{function};
Run Code Online (Sandbox Code Playgroud)
要解除分配:
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};
Run Code Online (Sandbox Code Playgroud)
这种编程模式的"最佳实践"是什么?
用TObjectList<T>而不是TList<T>.
默认情况下TObjectList<T>,当您从列表中删除对象时释放对象,或者在释放对象列表本身时释放所有对象.这OwnsObjects由默认情况下构造函数的参数控制True.
| 归档时间: |
|
| 查看次数: |
724 次 |
| 最近记录: |