Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


TStas ©   (2005-09-09 16:14:00) 

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


Digitman   (2005-09-09 16:59:00) [1]


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


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


Anatoly Podgoretsky   (2005-09-09 16:53:00) [2]

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

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


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

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


Digitman   (2005-09-09 16:18:00) [4]


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


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


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


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

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


MBo   (2005-09-09 16:17:00) [5]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо