Не освобождается память после TStringList.create

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Не освобождается память после TStringList.create

Сообщение Troublemaker » 28.05.2008 23:12:56

Код: Выделить всё
myform=class...
private
  MyIni,SLModules,SLQuestions,SLAnswers:TStringList;
...
procedure  myform.OnCreate
  ...
  MyIni:=TStringList.Create;
  SLModules:=TStringList.Create;
  SLQuestions:=TStringList.Create;
  SLAnswers:=TStringList.Create;

С MyIni идет интенсивная работа, SLModules несколько раз опрашивается на предмет count. SLQuestions и SLAnswers пока никак не используются.
Собираю с heaptrc. После завершения программы ругается на три неосвобожденных блока по 50 байт, давая номера двух последних строк, где (SLQuestions|SLAnswers):=TStringList.create. Чем загажен третий блок не говорит.
Отключаю две этих строчки - всё нормально, но мне нужны будут эти листы.

Чтение SLQuestions.count и SLAnswers.count ничего не меняет. Размещение декларации в самом модуле, вне описания формы, тоже никак не влияет.

Мне пора в психушку?
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: Не освобождается память после TStringList.create

Сообщение Padre_Mortius » 29.05.2008 00:23:52

а кто освобождать их будет по окончанию использования?

Добавлено спустя 14 минут 28 секунд:
Для этого используется метод Free. Самостоятельно они не освобождаются
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Не освобождается память после TStringList.create

Сообщение Troublemaker » 29.05.2008 08:28:31

Padre_Mortius писал(а):Для этого используется метод Free
Угу, знаю.

Сейчас еще раз пересмотрел код. Заметил странную вещь: MyIni я уже давно освобождаю при закрытии формы. SLModules - НЕ освобождал, но ругаться heaptrc начинал только тогда, когда был открыт (и не освобожден) третий и(или) четвертый лист.

Не, в психушку мне рано, а вот выспаться не помешает: все стринглисты я пытался освобождать в одной строке. Раскомментирую ее - лезут глюки, причем совершенно невразумительные. А всё из-за того, что MyIni уже был освобожден парой строк выше, и я пытаюсь его снова освободить.

Тогда получается, что если утечка порядка 50 байтов и только в одном блоке, heaptrc считает, что всё в порядке?
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: Не освобождается память после TStringList.create

Сообщение Padre_Mortius » 29.05.2008 13:55:16

Troublemaker писал(а): все стринглисты я пытался освобождать в одной строке.


Это как?

Добавлено спустя 5 минут:
Troublemaker писал(а):А всё из-за того, что MyIni уже был освобожден парой строк выше, и я пытаюсь его снова освободить.


А потом начинают говорить, что форматирование исходного кода не нужно и вообще лень и все такое) А искать свои же ошибки по несколько часов можно)

З.Ы. Сорри за оффтоп
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru