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

Вниз

объекты и память   Найти похожие ветки 

 
freeman82   (2004-11-11 12:07) [0]

В программе создаются несколько объектов
procedure TForm1.Button1Click(Sender: TObject);
var
 obj:TMyObject;
begin
 obj:=TMyObject.create;
 obj.property1:="";
end;
Если я при закрытии программы напишу
obj.free;
то освободится ли память выделенная под все объекты данного класса?


 
REA   (2004-11-11 12:15) [1]

Нет, если присваивать все объекты одной переменной obj.


 
Семен Сорокин ©   (2004-11-11 12:19) [2]

procedure TForm1.Button1Click(Sender: TObject);
var
obj:TMyObject;
begin
obj:=TMyObject.create;
obj.property1:="";
end;


здесь явная утечка памяти...
каждому вызову Create должен соответствовать вызов Free


 
Gloomer ©   (2004-11-11 12:31) [3]

а может переменную obj стоит объявить глобально и создавать TMyObject.create только один раз в FormCreate?
И как при закрытии программы у тебя будет присутствовать obj, если она определена локально в ButtonClick?


 
freeman82   (2004-11-11 12:33) [4]

а как решить такую задачу,есть дерево treeview,в каждом узле дерева я хочу хранить указатель на объект,
node.data:=obj;
как при закрытии программы удалить память выделенную под все объекты.


 
panov ©   (2004-11-11 12:42) [5]

>freeman82   (11.11.04 12:33) [4]

Пройтись в цикле по всему дереву и освободить память, выделенную под объекты.


 
Digitman ©   (2004-11-11 12:44) [6]


> freeman82   (11.11.04 12:33) [4]
> как при закрытии программы удалить память выделенную под
> все объекты.


именно при закрытии ты вправе вообще об этом не беспокоиться.


 
freeman82   (2004-11-11 13:03) [7]

>Digitman
т.е. если я делаю так
var
 obj:TMyObject;
begin
 obj:=TMyObject.create;
 obj.property1:="";
 TreeView1.Items.AddChildObject(Node,obj.property1,obj);

то при закрытии программы не будет утечки памяти?


 
Digitman ©   (2004-11-11 13:11) [8]


> freeman82   (11.11.04 13:03) [7]


в соответствии с документацией Майкрософт - не будет.


 
freeman82   (2004-11-11 13:19) [9]

Спасибо за ответы


 
begin...end ©   (2004-11-11 13:21) [10]

Digitman ©   (11.11.04 13:11) [8]

Кстати, а с динамическими массивами - также?
Т.е. они тоже автоматически освободятся при закрытии?


 
panov ©   (2004-11-11 13:27) [11]

>begin...end ©   (11.11.04 13:21) [10]
При завершении процесса все ресурсы освобождаются...


 
Digitman ©   (2004-11-11 13:40) [12]


> begin...end ©   (11.11.04 13:21) [10]
> Кстати, а с динамическими массивами - также?


а какая разница - "динамический" массив или какой-то иной ?
с т.з. ресурсов ОС - абсолютно никакой разницы.


 
begin...end ©   (2004-11-11 13:44) [13]

panov ©   (11.11.04 13:27) [11]
Digitman ©   (11.11.04 13:40) [12]

Спасибо.


 
KSergey ©   (2004-11-11 15:33) [14]

> [8] Digitman ©   (11.11.04 13:11)

Формально, с учетом наличия слов "при закрытии программы" ответ, конечно, верный, но не боитесь ли, уважаемый, что он будет привратно истолкован? ;) В том числе распространен на случаи с отсутствующими словами "при закрытии программы"?


 
Digitman ©   (2004-11-11 15:53) [15]


> KSergey ©   (11.11.04 15:33) [14]



> не боитесь ли


мне, знаете ли, фиолетово.

ну превратно истолкует человек, ну споткнется, ну набъет лишнюю шишку - это проблемы невнимательного чтения им материала дискуссии.

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


 
icWasya ©   (2004-11-11 16:05) [16]

>freeman82   (11.11.04 12:33) [4]
>как при закрытии программы удалить память выделенную под все объекты.

У TreeView есть событие OnDeletion
procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
begin
 TObject(Node.Data).Free;
end;



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

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

Наверх




Память: 0.5 MB
Время: 0.052 c
14-1100239466
WondeRu
2004-11-12 09:04
2004.11.28
Подскажите, чем можно мониторить запросы браузера...


14-1100094526
peypivo
2004-11-10 16:48
2004.11.28
Поздравляю с победой Ющенко !!!


14-1100291108
Knight
2004-11-12 23:25
2004.11.28
Почему антивирусы грузяться так поздно...


1-1100061003
officeman
2004-11-10 07:30
2004.11.28
про tStringList.Create


3-1098803484
clickmaker
2004-10-26 19:11
2004.11.28
MS SQL, LPC & TCP/IP