加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Delphi中分配和取消分配动态列表的最佳方法?

发布时间:2020-12-15 09:36:39 所属栏目:大数据 来源:网络整理
导读:我是Delphi的新手,并试图弄清楚如何处理内存管理. 我有一个类TFileData,它被动态分配并放入一个列表中.每次我从文件重新加载数据时,我都需要释放旧对象并分配新对象. 分配我使用这个功能: function TImportXmlForm.GetLanguageFileData: TListTFileData;beg
我是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};

这种编程模式的“最佳实践”是什么?

解决方法

使用TObjectList< T>而不是TList< T>.

默认情况下,TObjectList< T>将对象从列表中删除时释放对象,或者在释放对象列表本身时释放所有对象.这由构造函数的OwnsObjects参数控制,默认情况下为True.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读