Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

Ошибка при удалении обьекта_2. Delphi

Привет ALL!
Если всё зделать так.
/=========/
destructor TLPoint.Destroy;
var
i:integer;
begin
bmp.Free;
l.free;
inherited Destroy;
end;
procedure Tform1.DestroyForm(sender:Tobject);
begin
listP.Free;
end;
То работает без ошибок.
Меня интересует класс Tlist.
- Я же сам создал обьект, следовательно должен и сам его удалить. Не учто
List.Free уничтожает ещё все обьекты, связанные с ним?
Если да, то он вызавет деструктор или каким-нибудь "диким" метод очистит
память?
--
Ктому же в l- я записываю указатели на тип-запись. Метод Free очистит
память, занятую и под них?
А как можно прокантралировать освобождение памяти?

Номер выпуска : 3925
Возраст листа : 477 (дней)
Количество подписчиков : 518
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/295126
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

Ответить   Tue, 11 Jan 2005 22:03:52 +0300 (#295126)

 

Ответы:

Hello Малышев,

Tuesday, January 11, 2005, 9:03:52 PM, you wrote:

Ну да! Метод Free любого объекта проверяет существование объекта и,
если он существует, вызывает деструктор объекта. Причем, сколько бы ни
было элементов в объекте (у нас это - список), они все освобождаются.

Да. Все равно, какой тип туда пишется. Важно, что все это -
указатели. Да и в самом процессе очистки нет ничего магического.
Просто, указатели сбрасываются в nil, переставая куда-либо указывать.

Думаю, можно использовать GetHeapStatus/

Ответить   Вадим Шешунов Wed, 12 Jan 2005 00:33:12 +0200 (#295242)

 

Здравствуйте, Малышев.

Вы писали 12 января 2005 г., 1:03:52:

Если перекрывался конструктор и деструктор, то да. А вообще должен
удалить только TList. Во всяком случае, у меня именно так и делал

А что за "дикий" метод? Все деструкторы работают по принципу вызова
стандартной системной функции очистки памяти типа паскалевской FreeMem

Нет, указатели будут затерты, но вот данные по этим указателям
останутся на своих местах

Например, с помощью программы memproof

Ответить   Wed, 12 Jan 2005 19:40:33 +0600 (#295721)