【发布时间】:2020-06-26 18:39:45
【问题描述】:
我有一个TObjectList<TUSBDevice>,其中TUSBDevice 是我创建的一个类。我尝试使用作为参数传递的索引调用Delete,但它只是做了TList.Delete() 所做的事情:从列表中删除指针但不释放对象本身。
我在TUSBDevice.Destroy() 上放置的断点在调用Delete() 时不会中断。我在TObjectList 上也有手表,我可以看到该项目已从列表中删除,但该对象的内存地址处的内容并未被释放。
TUSBDevice的析构函数:
destructor TUSBDevice.Destroy();
begin
removeDatabaseEntry();
filteredFolders.Free();
fileQueue.Free();
end;
【问题讨论】:
-
请提供minimal reproducible example您的问题没有足够的信息来重现您的问题。
-
您可能忘记用
override标记TUSBDevice析构函数声明:destructor Destroy; override;。或者您的对象列表不拥有其成员。 -
这是安德烈亚斯的问题,谢谢。我总是忘记我需要这样做。
标签: delphi destructor rad-studio tlist tobjectlist