Показать сообщение отдельно
  #15  
Старый 13.07.2012, 09:44
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Цитата:
Сообщение от R-18Rus
Вот держи.

Проверил на Win7 x64 (компилятор от XE) - безконтрольного увеличения памяти не увидел.

Однако так писать нельзя, ИМХО.

Зачем создавать форму если она у тебя в Auto-create?
Что по сути происходит в данном проекте:
- есть переменная form2, она "связана" с автоматически созданной формой (форма создана при старте проекта).
- по нажатию кнопки ты создаешь новую форму и "связываешь" ее с переменной form2 (под это выделяется память, видим прирост памяти в диспетчере задач), получается что на экземпляр второй формы который был создан при старте приложения уже не указывает никакая переменная - это называется утечка памяти, но в данном случае проблема не в delphi, а в криворукости программиста.
- затем ты делаешь free для второй формы, переменная form2 уже никуда не указывает, память помечается как свободная (но не отдается обратно системе, это не бага это фича), и при повторном нажатии на кнопку форма заново создается, память выделяется (т.к. есть свободная то у системы больше не просим, и в дипетчере задач изменения объема памяти не наблюдается).

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

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием