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

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

TObjectList [D7, WinXP]


Simon ©   (2004-10-18 08:44:00) 

Я добавляю в список:
procedure TCoverListType.Add(Bmp: TBitMap);
begin
i:= ObjectList.Add(TJPEGImage.Create);
TJPEGImage(ObjectList.items[i]).assign(bmp);
TJPEGImage(ObjectList.items[i]).CompressionQuality:= 50;
TJPEGImage(ObjectList.items[i]).Compress;
end;
Очищаю список:

procedure TCoverListType.Clear;
begin
ObjectList.Clear;
end;

Все работает, но XP инспектор показывает что память не освобождается, подскажите в чем проблема?


Amoeba   (2004-10-18 12:08:00) [1]

Чтобы при вызове ObjectList.Clear объекты уничтожались необходимо выставить OwnsObjects в True. Иначе уничтожать их ручками.
F1, RTFM

P.S. Утечки памяти нужно отслеживать не утилитами из ОС, а только специальными отладчиками, например MemProof.


Гаврила   (2004-10-18 09:45:00) [2]


> [1] Warlock ©


При OwnsObjects = True такой код вызовет двойное освобождение

Автору
XP инспектор - это что такое? Может врет просто ,или может он не предназначен для отслеживания таких моментов?

просто проверь ,вызываются ли деструкторы при clear


MBo   (2004-10-18 09:09:00) [3]

посмотри на свойство OwnsObjects


Warlock   (2004-10-18 08:50:00) [4]

Создавал объекты вручную и удаляй так же

procedure TCoverListType.Clear;
var i: Integer;
begin
for i:=0 to ObjectList.Count-1 do
TJPEGImage(ObjectList[i]).Free;
ObjectList.Clear;
end;


Наверх

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