Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
ВнизTObjectList Найти похожие ветки
← →
Simon (2004-10-18 08:44) [0]Я добавляю в список:
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 инспектор показывает что память не освобождается, подскажите в чем проблема?
← →
Warlock © (2004-10-18 08:50) [1]Создавал объекты вручную и удаляй так же
procedure TCoverListType.Clear;
var i: Integer;
begin
for i:=0 to ObjectList.Count-1 do
TJPEGImage(ObjectList[i]).Free;
ObjectList.Clear;
end;
← →
MBo © (2004-10-18 09:09) [2]посмотри на свойство OwnsObjects
← →
Гаврила © (2004-10-18 09:45) [3]
> [1] Warlock ©
При OwnsObjects = True такой код вызовет двойное освобождение
Автору
XP инспектор - это что такое? Может врет просто ,или может он не предназначен для отслеживания таких моментов?
просто проверь ,вызываются ли деструкторы при clear
← →
Amoeba © (2004-10-18 12:08) [4]Чтобы при вызове ObjectList.Clear объекты уничтожались необходимо выставить OwnsObjects в True. Иначе уничтожать их ручками.
F1, RTFM
P.S. Утечки памяти нужно отслеживать не утилитами из ОС, а только специальными отладчиками, например MemProof.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c