![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Освобождение памяти TList [D7, WinXP]
Виталий_______ © (2009-05-21 08:04:00)Доброе время суток!
Имеется экземпляр класса TList с разнородным содержимым внутри. Необходимо корректно освободить память.
До некоторого времени спасало:
procedure FreeList(var WhatList:TList);
var i:integer;
begin
for i:=0 to WhatList.Count-1 do begin
TObject(WhatList.Items[i]).Free;
end;
WhatList.Clear;
end;
Все бы хорошо, но обнаружилась такая вещь: если в качестве объекта будет какой-либо класс с собственным деструктором, например
TLineData=class(TObject)
public
n0Lin:array of TMyPoint;
...
destructor destruct;
destructor free;
То возникает такая проблема: при преобразовании во FreeList элемента списка к TObject и выполнении .Free, выполняется деструктор TObject.Free, а не переписанный TLineData.Free. В итоге память под n0Lin:array of TMyPoint;не освобождается.
Как в данном случае правильно поступить (например, получить тип элемента списка или что-то другое существует чего я не знаю)?
Palladin (2009-05-21 08:08:00) [21]А предупреждения компилятора значит не читаем ни разу? Садись, два.