Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Освобождение памяти TList [D7, WinXP]


Страницы:   1 2

Виталий_______ ©   (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]

А предупреждения компилятора значит не читаем ни разу? Садись, два.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо