在我的代码中,我使用了一个小型的数据存储类,在不同的位置创建。为了避免内存泄漏并简化操作,我想使用引用计数,因此我进行了以下操作:
type TFileInfo = class (TInterfacedObject, IInterface)
我曾经移除了所有手动调用TFileInfo.Free的代码,但不幸的是Delphi报告了很多内存泄漏。在Stack Overflow上搜索后,我发现以下问题解释了为什么这样做行不通:
为什么TInterfacedObject的派生类不能进行垃圾回收?
那里提供了一个解决方法,但它需要我(至少我理解是这样)编写一个自定义接口IFileInfo,并为其提供许多getter和setter,而我想避免这样做。
编辑 我应该补充说明一下,我将创建的FileInfo对象插入到两种不同类型的哈希表中:一种从TBucketList继承,另一种是Codegear论坛的哈希映射实现。在内部,它们都使用指针,因此情况就像其他问题一样。
还有其他可能使Delphi中的对象使用引用计数的方法吗?