Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > create,free


Автор: SlaUr 14.3.2007, 09:10
У меня такой вопрос ,допустим я хочу использовать в программе list:tsringlist
Создаем List:
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
  List:=TStringList.Create;
end

Пользуемся в программе List
при закрытии программы уничтожаем его:
Код

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
List.Free;
end;


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

Т.е. принципиальное ли правило уничтожать те динамические обьекты которые создаются при работе программы или это просто общепринятое правило?

Автор: MetalFan 14.3.2007, 09:12
SlaUr, вся память, занятая под нужды процесса, освободиться при завершении процесса, но считается правильным "положить обратно, где взял"...

Автор: Sunvas 14.3.2007, 09:44
Цитата(SlaUr @  14.3.2007,  09:10 Найти цитируемый пост)
Т.е. принципиальное ли правило уничтожать те динамические обьекты которые создаются при работе программы или это просто общепринятое правило?

Если ты временно создаешь объект, то да. Но если ты делаешь уничтожение объекта при закрытии программы, то это лишнее т.к. 
Цитата(MetalFan @  14.3.2007,  09:12 Найти цитируемый пост)
 вся память, занятая под нужды процесса, освободиться при завершении процесса

 smile 

Автор: SlaUr 14.3.2007, 10:18
Спасибо за ответы

Автор: Rennigth 14.3.2007, 10:34
Цитата(Sunvas @  14.3.2007,  09:44 Найти цитируемый пост)
то это лишнее

 smile  Совсем не лишнее. 
Память то освободиться, а если объект при разрушении должен еще что-то делать... (Стереть за собой временные файлы или еще что). Это должно войти в привычку. Взял-отдал, как еще раз напомнил MetalFan.   smile 
 

Автор: Yanis 14.3.2007, 10:50
Цитата(Sunvas @  14.3.2007,  10:44 Найти цитируемый пост)
Но если ты делаешь уничтожение объекта при закрытии программы, то это лишнее т.к. 

К слову сказать, я всё равно все созданные в процессе работы, например глобальные классы, уничтожаю перед закрытием формы. Ну так вот я сделан smile

Автор: Sunvas 14.3.2007, 12:52
Цитата(Rennigth @  14.3.2007,  10:34 Найти цитируемый пост)
 (Стереть за собой временные файлы или еще что).

Это уже отдельные случаи.
Цитата(Yanis @  14.3.2007,  10:50 Найти цитируемый пост)
К слову сказать, я всё равно все созданные в процессе работы, например глобальные классы, уничтожаю перед закрытием формы.

 smile  привычка хорошая, но иногда это просто не нужно.

Автор: MetalFan 14.3.2007, 14:08
Цитата(Sunvas @  14.3.2007,  12:52 Найти цитируемый пост)
иногда это просто не нужно

ага, например просто TerminateProcess и все)

Автор: aktuba 14.3.2007, 15:32
MetalFan, это уже клиника =)))))

Автор: Sunvas 14.3.2007, 15:54
Цитата(MetalFan @  14.3.2007,  14:08 Найти цитируемый пост)
ага, например просто TerminateProcess и все)

И такое иногда надо. Когда, например компонент глючный попался и нет желание перевать миллионы строк кода чтобы найти ошибку.

Автор: Rennigth 14.3.2007, 16:24
ИМХО, тогда такой "компонент" надо выкинуть smile

Автор: yus 16.3.2007, 08:12
Просто культура программирования должна быть, поэтому надо выработать привычку, взял - отдай, и читаемость кода повышается.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)