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

Вниз

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

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

Наверх




Память: 0.47 MB
Время: 0.031 c
14-1100026168
Константинов
2004-11-09 21:49
2004.11.28
О ворованых мобильниках


3-1099296376
NewDelpher
2004-11-01 11:06
2004.11.28
Непонятки с sp_who


1-1099203342
Skyhawk
2004-10-31 09:15
2004.11.28
XP form


1-1099646985
Dimedrol
2004-11-05 12:29
2004.11.28
Как пункты меню и captions писать unicod-ом ?


14-1100275075
Томик
2004-11-12 18:57
2004.11.28
ищу друзей





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский