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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2011, 17:01   #1
t2skler
Форумчанин
 
Аватар для t2skler
 
Регистрация: 25.11.2010
Сообщений: 164
По умолчанию Утечка памяти при загрузке ресурсов из dll

Сегодня решил проверить программу на наличие утечек памяти. В результате оказалось, что все 8 утечек размером в 192 кб происходят при загрузке картинок из библиотеки.
Код:
 H:=LoadLibrary('picture.dll');
 if H<>0 then
  begin
   imgLogo.Picture.Bitmap.LoadFromStream(TResourceStream.Create(H,'LOGO','BMP'));
   sbRefresh.Glyph.LoadFromStream(TResourceStream.Create(H,'REFRESH','BMP'));
   N1.Bitmap.LoadFromStream(TResourceStream.Create(H,'REFRESHSMALL','BMP'));
   N2.Bitmap.LoadFromStream(TResourceStream.Create(H,'WINDOWLIST','BMP'));
   N4.Bitmap.LoadFromStream(TResourceStream.Create(H,'GOAWAY','BMP'));
   imgTop.Picture.Bitmap.LoadFromStream(TResourceStream.Create(H,'TOP','BMP'));
   N5.Bitmap.LoadFromStream(TResourceStream.Create(H,'PASTE','BMP'));
   N6.Bitmap:=N5.Bitmap;
   N8.Bitmap.LoadFromStream(TResourceStream.Create(H,'HOME','BMP'));
  end;
 FreeLibrary(H);
Подскажите, как мне избавиться от этих утечек?
Возможно Я Быдлокодер ©.
t2skler вне форума Ответить с цитированием
Старый 18.05.2011, 17:06   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Код:
r:=TresourceStream.Create(...);
,,,.LoadFromstream(r);
r.Free;
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 18.05.2011, 17:07   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Цитата:
Сообщение от t2skler Посмотреть сообщение
Сегодня решил проверить программу на наличие утечек памяти. В результате оказалось, что все 8 утечек размером в 192 кб происходят при загрузке картинок из библиотеки.
Код:
 H:=LoadLibrary('picture.dll');
 if H<>0 then
  begin
   imgLogo.Picture.Bitmap.LoadFromStream(TResourceStream.Create(H,'HOME','BMP'));
   sbRefresh.Glyph.LoadFromStream(TResourceStream.Create(H,'HOME','BMP'));
   N1.Bitmap.LoadFromStream(TResourceStream.Create(H,'HOME','BMP'));
   N2.Bitmap.LoadFromStream(TResourceStream.Create(H,'HOME','BMP'));
   N4.Bitmap.LoadFromStream(TResourceStream.Create(H,'HOME','BMP'));
   imgTop.Picture.Bitmap.LoadFromStream(TResourceStream.Create(H,'HOME','BMP'));
   N5.Bitmap.LoadFromStream(TResourceStream.Create(H,'HOME','BMP'));
   N6.Bitmap:=N5.Bitmap;
   N8.Bitmap.LoadFromStream(TResourceStream.Create(H,'HOME','BMP'));
  end;
 FreeLibrary(H);
Подскажите, как мне избавиться от этих утечек?
Да ниужели! А освобождать созданные обьекты кто за тебя будет??
Человек_Борща вне форума Ответить с цитированием
Старый 18.05.2011, 17:13   #4
t2skler
Форумчанин
 
Аватар для t2skler
 
Регистрация: 25.11.2010
Сообщений: 164
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Код:
r:=TresourceStream.Create(...);
,,,.LoadFromstream(r);
r.Free;
Да, вот оно. Пробывал точно также, но забыл каждый раз освобождать объект. И лучше использовать FreeAndNil(r). Ну это так, к слову. Спасибо.
Возможно Я Быдлокодер ©.
t2skler вне форума Ответить с цитированием
Старый 18.05.2011, 17:15   #5
t2skler
Форумчанин
 
Аватар для t2skler
 
Регистрация: 25.11.2010
Сообщений: 164
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Да ниужели! А освобождать созданные обьекты кто за тебя будет??
В принципе и вам спасибо, но предыдущий пост мне всё-таки напомнил про Free
Возможно Я Быдлокодер ©.
t2skler вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Утечка памяти при использовании DOM Ferrum26 Общие вопросы Delphi 4 13.08.2010 14:45
Утечка памяти при работе с GDI+ Ivan_32 Общие вопросы C/C++ 2 29.11.2009 00:12
Ошибка при загрузке dll nikmay Общие вопросы Delphi 10 25.06.2009 15:42
Ошибка при загрузке DLL dani92 Общие вопросы Delphi 12 24.04.2009 14:54
утечка памяти в С++ vengo Общие вопросы C/C++ 9 10.06.2008 21:24