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

Вниз

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

 
Просто прохожий   (2002-08-16 21:57) [0]

TMyClass = class
FCount : Integer;
FItems : array of Integer;
constructor Create (Count : Integer);
.......................................
end;

constructor Create (Count : Integer);
begin
inherited Create;
FCount := Count;
SetLength (FItems, FCount);
end;


Вопрос: при уничтожении объекта этого класса вся память, занимаемая им, освободится автоматически, или в деструкторе нужно дополнительно писать: Finalize (FItems), а уже потом вызывать унаследованный деструктор?


 
Anatoly Podgoretsky ©   (2002-08-16 22:11) [1]

Достаточно FItems := nil


 
Просто прохожий   (2002-08-16 22:20) [2]

Так значит всё-таки надо деструктор дополнительно описывать? Унаследованного недостаточно?


 
Anatoly Podgoretsky ©   (2002-08-16 22:55) [3]

Ну так раз в конструкторе захватываешь ресурсы, то больше негде их освободить


 
Юрий Зотов ©   (2002-08-16 22:58) [4]

> Вопрос: при уничтожении объекта этого класса вся память,
> занимаемая им, освободится автоматически,

Да, занимаемая им САМИМ - освободится автоматически. В том числе, освободятся 4 байта, которые занимает УКАЗАТЕЛЬ FItems. Но не освободятся ТЕ 4*Count байт, которые занимает ТЕЛО массива. Поскольку ЭТА память к САМОМУ объекту никакого отношения не имеет.

Вот и выходит, что деструктор нужен.



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

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

Наверх




Память: 0.47 MB
Время: 0.013 c
1-95898
Punk4
2002-08-11 20:48
2002.08.29
try... finally в Delphi 5


14-95952
igorr
2002-08-03 05:51
2002.08.29
Склонение фамилий *юк, *ук


3-95657
restless
2002-08-07 13:21
2002.08.29
Чем Delphi лучше Visual FoxPro.


3-95720
maxim2
2002-08-09 07:39
2002.08.29
Есть ли у DBGrid событие реагирующие когда пользователь перешел..


14-95951
Hellman
2002-08-03 20:10
2002.08.29
Win XP Style