У меня есть TObjectList<TUSBDevice>
, где TUSBDevice
— класс, который я создал. Я попытался вызвать Delete
с индексом, переданным в качестве параметра, но он просто делает то, что делает TList.Delete()
: удаляет указатель из списка, но не освобождает сам объект.
Точка останова, которую я поставил на TUSBDevice.Destroy()
, не прерывается при вызове Delete()
. У меня также были часы на TObjectList
, и я вижу, что элемент удаляется из списка, но содержимое по адресу памяти объекта не освобождается.
Деструктор TUSBDevice
:
destructor TUSBDevice.Destroy();
begin
removeDatabaseEntry();
filteredFolders.Free();
fileQueue.Free();
end;
TUSBDevice
знакомoverride
:destructor Destroy; override;
. Или ваш список объектов не владеет своими членами. - person Andreas Rejbrand   schedule 15.03.2020