Главная страница
    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.5 MB
Время: 0.007 c
3-1195444789
Бакук
2007-11-19 06:59
2008.04.13
Слетает «привязка» к датамодулю


11-1187713261
Dy1
2007-08-21 20:21
2008.04.13
как использовать ExecuteConsoleAppIORedirect ?


15-1203874860
Dmitry S
2008-02-24 20:41
2008.04.13
Через 13 часов вылет в столицу...


2-1205562445
aleko
2008-03-15 09:27
2008.04.13
Caption динамического TMenuItem


2-1206078470
SKIPtr
2008-03-21 08:47
2008.04.13
нужно выполнить перерисовку компонента





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский