Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Закрытая тема
 
Опции темы
Старый 28.06.2011, 02:18   #1
 Разведчик
Аватар для Heylal
 
Heylal никому не известный тип
Регистрация: 28.06.2011
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Освобождение памяти

Обязательно ли освобождать память? Ведь после закрытии формы она и так освободится.
И чем отличается Free от Destroy?

Добавлено через 10 минут
У меня в цикле s:=TStringList.Create; без освобождения памяти это получается происходит нагрузка?

Последний раз редактировалось Heylal; 28.06.2011 в 02:28. Причина: Добавлено сообщение
 
Старый 28.06.2011, 09:53   #2
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: Освобождение памяти

Память освобождать нужно в зависимости от того нужно ли вам осовобождать память.
Если Вы в цикле создаете множество объектов, которые вам вне цикла не нужны - память, выделенную под них, необходимо освобождать, иначе загадите оперативку (или файл подкачки) мусором.

Если Вас интерисуют различия конкретно для TStringList

Free ("безопасное" уничтожение, перед уничтожением проверяется существование объекта):
Код:
procedure TObject.Free;
begin
  if Self <> nil then
    Destroy;
end;
Destroy:
Код:
destructor TStringList.Destroy;
begin
  FOnChange := nil;
  FOnChanging := nil;
  inherited Destroy;
  if FCount <> 0 then Finalize(FList^[0], FCount);
  FCount := 0;
  SetCapacity(0);
end;
 
Старый 28.06.2011, 09:55   #3
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: Освобождение памяти

Для TStringList лучше использовать Free:
Код:
s.Free
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.

Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.


 
Старый 28.06.2011, 11:31   #4
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: Освобождение памяти

Если программа работает по 1 час, и этот цикл выполняется с периодом в 1 секунду, и размер вашего стринглиста 1 метр, то за этот самый час вы займете 3600 метров памяти.
 
Закрытая тема


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Статья] Загрузка Dll Из Памяти ElectroVamp Баги, читы и статьи по Point Blank 11 15.06.2012 16:32
Кей кф, недостаточно памяти ... diablo1525 Общение и обсуждение CrossFire 4 29.01.2012 15:30
[Статья] Загрузка dll из памяти =DemoH=Be$T= Баги, читы и статьи по Point Blank 4 06.01.2012 14:14
[Руководство] Как обнаружить утечку памяти daff26 С/С++ 0 22.12.2011 17:25

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 08:59.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net