Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 30.09.2020, 13:54   #11
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,096
По умолчанию

Цитата:
Код:
sl:=TStringList.Create;
structdata(..., sl, ...);
... // что-то делаем
sl.Free;
а НУЖНО ли теперь каждый раз создавать некий объект(sl) или же можно использовать уже существующий TStrings (Мемо.Lines и т.д. ) ?
да можно. --отлично нет проблемы памяти.
нет нельзя. -- мы видим где можно ее занять(Сreate), и видим где ее можно(пора) освободить(Free).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 30.09.2020, 16:02   #12
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 14,982
По умолчанию

Цитата:
Сообщение от munhauz Посмотреть сообщение
for i := 0 to stl.Count - 1 do
begin
// stl2.Add(stl[i]);
stl2 := strtostldis(stl[i], '|');
end;
FreeAndNil(stl);
FreeAndNil(stl2);
У вас stl2 создается в функции strtostldis, а функция вызывается в цикле. Получается, что будет создано столько объектов, сколько итераций в цикле. А освободится только один последний. Самый лучший совет выше уже был дан - выделять и освобождать память в одном и том же месте, а не в разных подпрограммах. Тогда вы четко видите, где косяк.
Arigato вне форума Ответить с цитированием
Старый 03.10.2020, 21:48   #13
munhauz
Пользователь
 
Регистрация: 07.10.2010
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
У вас stl2 создается в функции strtostldis, а функция вызывается в цикле. Получается, что будет создано столько объектов, сколько итераций в цикле. А освободится только один последний. Самый лучший совет выше уже был дан - выделять и освобождать память в одном и том же месте, а не в разных подпрограммах. Тогда вы четко видите, где косяк.
Все понял где косяк …
спасибо камрады )))
я чего не подумал про цикл....и цикличность создаваемых объектов.
добавил очистку в цикл и все работает превосходно
еще раз спасибо
munhauz вне форума Ответить с цитированием
Старый 04.10.2020, 13:34   #14
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 815
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
РЕКОМЕНДУЕТСЯ выделение и освобождение памяти делать на одном уровне.
Почему? В чём подвох?
BLACK_RAIN вне форума Ответить с цитированием
Старый 04.10.2020, 14:04   #15
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 14,982
По умолчанию

Цитата:
Сообщение от BLACK_RAIN Посмотреть сообщение
В чём подвох?
Подвох наглядно продемонстрировал автор темы.
Arigato вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с выделением памяти (Си) _BYTE Помощь студентам 0 19.04.2014 15:22
Проблема с утечкой памяти mr_cipher C# (си шарп) 10 28.08.2012 13:18
Проблема с переполнением памяти maxeebon Общие вопросы Delphi 4 19.08.2011 21:09
Проблема с освобождением памяти Vyachek2010 Общие вопросы Delphi 15 08.02.2011 17:05
Проблема с виделением памяти! FreTFuL Общие вопросы C/C++ 1 07.05.2010 19:23


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840