Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.052 c
3-1125407170
menart
2005-08-30 17:06
2005.10.16
Как отловить изменение размера столбца в TDBGrid?


14-1127281640
КаПиБаРа
2005-09-21 09:47
2005.10.16
Я считаю что в школе пора вводить предмет Толерантность


2-1127088899
antoxa2005
2005-09-19 04:14
2005.10.16
Всем вопросам вопрос. А как получить значения подписи полей в Acc


8-1116912928
ALL
2005-05-24 09:35
2005.10.16
MediaPlayer


2-1127123367
Wolferio
2005-09-19 13:49
2005.10.16
Как удалить файл





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский