Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.13;
Скачать: CL | DM;

Вниз

как правельно освободить память в TStringList   Найти похожие ветки 

 
webSQLNeederr   (2008-03-15 16:56) [0]

Мне нужно в цикле работать с TStringList

Как правельно освобождать память? Пример
for i:=0 to 10 do
begin
str:=TStringList.create;
blablabla
str.Free;
end;


 
webSQLNeederr   (2008-03-15 17:09) [1]

Забыл добавить в предыдущий вариант еще str.LoadFromFile("...");

Или же можно сделать вот так

str:=TStringList.create;
for i:=0 to 10 do
begin
str.LoadFromFile("...");
blablabla
str.text:="";
end;
str.Free;


 
b z   (2008-03-15 17:10) [2]

TStringList.Clear - не поможет?


 
Anatoly Podgoretsky ©   (2008-03-15 17:12) [3]

> webSQLNeederr  (15.03.2008 16:56:00)  [0]

Добавить try finally


 
Anatoly Podgoretsky ©   (2008-03-15 17:17) [4]

> webSQLNeederr  (15.03.2008 17:09:01)  [1]

Можно, но все равно try finally нужен, а вот str.text:=""; нет


 
Сергей М. ©   (2008-03-15 18:04) [5]

блаблабла - это, видать . шибкий намек на неправилбность ?


 
MOO   (2008-03-15 18:58) [6]


> как "правельно" освободить память в TStringList

Ну для начала..начать "правельно" писать


 
webSQLNeederr   (2008-03-15 20:25) [7]

Так Clear или Free ??


 
{RASkov} ©   (2008-03-15 20:31) [8]

> [7] webSQLNeederr   (15.03.08 20:25)
> Так Clear или Free ??

Clear - одно очищает, а Free другое совсем...
У тебя вопрос получается не корректным спрашиваешь одно примеры по другому... Спрашиваешь про очистку памяти В стринглисте, а примеры вроде как подразумевают удаление самого стринглиста с памяти.... Вообщем читай хэлп)


 
webSQLNeederr   (2008-03-15 20:59) [9]

Короче в чем проблема - у меня в процессе работы программы вот такого типа
str:=TStringList.create;
for i:=0 to 10 do
begin
str.LoadFromFile("...");
blablabla
str.text:="";
end;
str.Free;

Вылетело сообщение, что не хватает памяти. Собственно вот я и думаю как экономить память ... Что посоветуете?


 
Anatoly Podgoretsky ©   (2008-03-15 21:05) [10]

ты принципиально ответы не читаешь, данный код источник неприятностей.


 
{RASkov} ©   (2008-03-15 21:08) [11]

> [9] webSQLNeederr   (15.03.08 20:59)
> Что посоветуете?

Убрать блаблабла и проверить... может все дело в блаблабла?
Ну и изменить код с замечаниями из этой ветки в частности замечаниями Анатолия...
И конечно же читать хэлп и разобраться в Clear и Free - что же это...


 
webSQLNeederr   (2008-03-16 00:15) [12]


> ты принципиально ответы не читаешь, данный код источник
> неприятностей.

Да при чем тут трай файнали ??? Это всего лишь инструмент обработки ошибок !!!

А я говорю об элементарном варианте - как в том урывке, что я привел сэкономить память?

str.Free если кинуть внутрь цикла и вначале каждой итерации str:=TStringList.create;

То вылетает ошибка виолейшн аксес ...


 
antonn ©   (2008-03-16 00:19) [13]


>
> str.Free если кинуть внутрь цикла и вначале каждой итерации
> str:=TStringList.create;
>
> То вылетает ошибка виолейшн аксес ...

еще бы... free убивает твой стринглсит.
какой размер у файла?


 
Kolan ©   (2008-03-16 00:21) [14]

> То вылетает ошибка виолейшн аксес &#133


> Вылетело сообщение, что не хватает памяти.

Ты определись наверно&#133

Так на какой строке то вылетело ?


 
Игорь Шевченко ©   (2008-03-16 00:33) [15]


> Вылетело сообщение, что не хватает памяти. Собственно вот
> я и думаю как экономить память ... Что посоветуете?


А может у тебя действительно не хватает памяти ?


 
Johnmen ©   (2008-03-16 00:47) [16]

Не хватает памяти? Всё занято серым веществом?
Да ладно заливать-то нашим ребятам...


 
{RASkov} ©   (2008-03-16 01:01) [17]

Удалено модератором
Примечание: Выражения выбираем, не в пивной


 
Германн ©   (2008-03-16 01:13) [18]


> Да при чем тут трай файнали ??? Это всего лишь инструмент
> обработки ошибок !!!

Да. Это инструмент обработки ошибок. Но это как раз самый незаменимый инструмент для устранения утечек памяти при многократном создании и уничтожении объектов в рантайме.


 
MetalFan ©   (2008-03-16 12:44) [19]


> незаменимый инструмент для устранения утечек памяти

а при чем тут утечки и try..finally? если вдруг что-то грохнется между try..finally, тогда он и поможет. а если где-то память кушается и не освобождается, то какая помощь от t..f ?


 
{RASkov} ©   (2008-03-16 13:02) [20]

> [19] MetalFan ©   (16.03.08 12:44)
> то какая помощь от t..f ?

О боже...

Вот смотри:
for N:=0 to 1000 do begin
 O.Create;
 try
  X:=5/0; //намерянная ошибка
 finally
  O.Free;
 end;
end;

и вот так
for N:=0 to 1000 do begin
 O.Create;
 X:=5/0; //намерянная ошибка
 O.Free;
end;

и где память потекёт???

> [17] {RASkov} ©   (16.03.08 01:01)

Меня уже "банить" начали в этой ветке :) И что я там такого сказал-то некультурного :( Вроде бы только примеры автору вопроса показывал :)
Как и здесь...)


 
{RASkov} ©   (2008-03-16 13:04) [21]

> и вот так
> for N:=0 to 1000 do begin
> O.Create;
> X:=5/0; //намерянная ошибка
> O.Free;
> end;

т.е. цикл здесь "собсно" и не при чем... но при выполнении этого кода "вручную"(например по нажатию TButton) все будет плохо :)


 
MetalFan ©   (2008-03-16 14:33) [22]


> {RASkov} ©   (16.03.08 13:04) [21]

в общем в твоем примере частный случай использования t..f. например для однозначного выполнения кода, который освободит экземпляр созданного ранее класса.


 
{RASkov} ©   (2008-03-16 14:37) [23]

> [22] MetalFan ©   (16.03.08 14:33)

Ну а теперь внимательно читаем [18] ;)


 
ЦУП ©   (2008-03-16 17:14) [24]


> MetalFan ©   (16.03.08 14:33) [22]
>
> > {RASkov} ©   (16.03.08 13:04) [21]
>
> в общем в твоем примере частный случай использования t..
> f. например для однозначного выполнения кода, который освободит
> экземпляр созданного ранее класса.


А у тебя есть другой инструмент для гарантированного освобождения динамически выделенных ресурсов?



Страницы: 1 вся ветка

Текущий архив: 2008.04.13;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.017 c
3-1195555156
AlexeyMir
2007-11-20 13:39
2008.04.13
Добавление записи в IBQuery+IBUpdateSQL


2-1205486032
masv
2008-03-14 12:13
2008.04.13
соединениться с mssql Server 2005 express


2-1205773230
Dima
2008-03-17 20:00
2008.04.13
Не могу разобраться с кодом.Помогите ПОЖАЛУЙСТА!!!


3-1195656537
umbra
2007-11-21 17:48
2008.04.13
одно ADOConnection для нескольких компонентов ADO


3-1195192547
Василий К.
2007-11-16 08:55
2008.04.13
IB в DLL