在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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |