Главная страница
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.03 c
1-1127599349
dominik
2005-09-25 02:02
2005.10.16
Unicode


14-1127808548
Rentgen
2005-09-27 12:09
2005.10.16
Байт в сектор?


3-1126023296
suharew
2005-09-06 20:14
2005.10.16
Блокировка записи


6-1119571665
z3oN
2005-06-24 04:07
2005.10.16
Winsock получение ответа от сервера ?


14-1126879521
TohaNik
2005-09-16 18:05
2005.10.16
Лукашенко резко критикует деятельность ООН и политику США