Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: CL | DM;

Вниз

Освобождение памяти.   Найти похожие ветки 

 
TStas ©   (2005-09-09 16:14) [0]

Когда я освобождаю память от объекта, но удаляю его, как его предка, например:
obj1:TWinControl;
(Sender as TControl).Free;
Точно вся память освободится?


 
MBo ©   (2005-09-09 16:17) [1]

деструктор Destroy - виртуальный метод  так что вызовется деструктор именно нужного типа. К TControl приводить нет смысла.


 
Digitman ©   (2005-09-09 16:18) [2]


> Точно вся память освободится?


а в чем сомнения-то ?


> удаляю его, как его предка


это ты явно сморозил.
причем здесь вообще предок ?
ты уничтожаешь ОБЪЕКТ !
и при этом неважно, наследником какого класса является уничтожаемый объект

Free вызовет Destroy.
Destroy - виртуальный метод.


 
TStas ©   (2005-09-09 16:37) [3]

>Digitman
Наверно торможу. Что дистрой виртуальный метод, это понятно, как бы я ниначе его перекрыл. Но ведь Sender:TObject, то есть по адресу памяти, которым он является, найдется тип объекта и вызовется соответствующий деструктор?


 
Anatoly Podgoretsky ©   (2005-09-09 16:53) [4]

Вот наглядный пример возможностей ООП

var
 X : TStrings;
begin
 X := TStringList.Create; // создаем из наследника
 X.Free;  // будет вызван метод Destroy класса TStringList, а не TStrings, поскольку метод виртуальной и заменяет собой метод TStrings.Destroy, вероятнее всего TStringList.Destroy вызовет внутри метод предка, но тебе об этом беспокоиться не стоит
end;


 
Digitman ©   (2005-09-09 16:59) [5]


> TStas ©   (09.09.05 16:37) [3]


если ты перекрыл в наследнике метод Destroy, за свой диструктор можешь не волноваться - он обязательно будет вызван, как бы ни был "обозван" Sender (лишь бы Sender имел тип, соответствующий одному из элементов цепочки "предков")



Страницы: 1 вся ветка

Текущий архив: 2005.10.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
1-1127486011
злобная танька
2005-09-23 18:33
2005.10.16
Локальные типизированные константы


1-1127885983
VG
2005-09-28 09:39
2005.10.16
Высота строки в Excel


2-1127253384
Цукор 5
2005-09-21 01:56
2005.10.16
Exit


2-1126099357
worldmen
2005-09-07 17:22
2005.10.16
Имена колонок TListView. Delphi 7.


14-1127454959
Тульский
2005-09-23 09:55
2005.10.16
Реклама ПО