Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

Цитата:
Код:
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
Сообщений: 15,542
По умолчанию

Цитата:
Сообщение от 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
Сообщений: 47
По умолчанию

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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