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

Вниз

Как узнать разрушен ли объект или нет   Найти похожие ветки 

 
Fast   (2003-09-22 03:57) [0]

Я содаю некий объект работаю с ним и при выходе из программы мне надо знать освобождена ли от него память. Хотел использовать Assigned но после вызова метода free, Assigned все рано возвращаеть true.


 
SergeyX   (2003-09-22 04:06) [1]

Assigned это простая проверка
на nil, вам надо после вызова метода free
прировнять переменную к нулю:

var x:TObject;
begin
x:=TObject.Create;
x.Free;
x:=nil;
end;


 
SergeyX   (2003-09-22 04:35) [2]

И где нибудь вначале программы обнуляйте все объекты,
перед их созданием разумеется))), иначе assigned может вернуть
true даже для тех объектов которые вы вообще не создавали...)

А вообще, если проверка требуется только при за вершении программы, то
об этом не обязательно думать, об этом заботится Windows,
я имею ввиду освобождение памяти


 
Fast   (2003-09-22 04:53) [3]

Спасибо SergeyX.
А проверка требуется не только по завершеню программы, потому ваш совет очень пригодится.

А кроме Assigned можно что-либо использовать для подобной задачи?


 
SergeyX   (2003-09-22 05:09) [4]

Только прямую проверку на nil)
if SomeObject=nil then ...

Я использую множество объектов в своих программах.
Для их "учёта" неплох использовать TList.
При создании объекта добовлять его туда, а
при разрушении удалять.


 
Думкин ©   (2003-09-22 05:52) [5]

FreeAndNil()


 
SergeyX   (2003-09-23 00:39) [6]

Действительно есть такой метод, но что он обнуляет, я так и не понял).
Переменная содеражащая ссылку на объект осталась <>0 ...)


 
ЮЮ ©   (2003-09-23 07:14) [7]

Это не метод, а просто процедура и в качестве параметра её и передают переменную, содеражащая ссылку на объект.

И вообще к чему весь это сыр-бор.
В деструкторе объекта (OnDestroy формы) пишем просто
FSomeObject.Free и всё (где FSomeObject - private/protected переменнвя объекта(формы), который создаем(а может и нет) в конструкторе объекта(onCreate формы). Ну откуда, скажите, там может оказаться "мусор"? Только из-за багов в программе, а их чем раньше отловишь, тем лучше :-)



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

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

Наверх




Память: 0.48 MB
Время: 0.016 c
7-18647
Dmitriy
2003-07-22 00:43
2003.10.06
---|Ветка была без названия|---


4-18687
gluka
2003-07-31 16:47
2003.10.06
Hook на WM_CREATE или HSHELL_WINDOWCREATED ?


1-18307
val_5
2003-09-23 23:02
2003.10.06
RegisterClass(TMyForm)


7-18650
DAT
2003-07-22 16:11
2003.10.06
Параметры печати, установки принтера, свойства документа?


14-18549
PVOzerski
2003-09-18 11:06
2003.10.06
Винч потерялся :^(