Форум: "Основная";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];
ВнизОсвобождение памяти Найти похожие ветки
← →
Просто прохожий (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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.007 c