Delphi:在调用Delete()之后,TObjectList不会释放对象

问题描述 投票:1回答:1

我有一个TObjectList<TUSBDevice>,其中TUSBDevice是我制作的课程。我尝试使用作为参数传递的索引来调用Delete,但它只是执行TList.Delete()的作用:从列表中删除指针,但不释放对象本身。

我在TUSBDevice.Destroy()上放置的断点在调用Delete()时不会中断。我在TObjectList上也有一块手表,可以看到该项目已从列表中删除,但该对象的内存地址中的内容没有被释放。

TUSBDevice的析构函数:

destructor TUSBDevice.Destroy();
begin
  removeDatabaseEntry();
  filteredFolders.Free();
  fileQueue.Free();
end;
delphi destructor rad-studio tlist tobjectlist
1个回答
2
投票

无法回答您的问题,因为它不包含最小的可复制示例;问题不在于您发布的代码中,而在于其他地方。

仍然,“被覆盖的”析构函数不运行的最常见原因是它实际上未被覆盖。因此,我几乎可以打赌您的Destroy声明缺少override

TUSBDevice = class
  // ...
public
  // ...
  destructor Destroy; override;
  // ...
end;
© www.soinside.com 2019 - 2024. All rights reserved.