Главная страница
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.054 c
2-1124979008
_Alex_2
2005-08-25 18:10
2005.10.16
создание exe


5-1101362935
diabolik_krsk
2004-11-25 09:08
2005.10.16
Помогите с наследником DBGrid


8-1116500972
poo
2005-05-19 15:09
2005.10.16
воспроизведение wave


3-1125577018
Term
2005-09-01 16:16
2005.10.16
Подзапросы


14-1127711424
Priest
2005-09-26 09:10
2005.10.16
Какой профиль для пластиковых окон лучше?