Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Утечка памяти, Deleaker Add-in for Visual C 1.2 
:(
    Опции темы
Alca
Дата 24.9.2008, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50



Скачал такую штуку Deleaker Add-in for Visual C 1.2.zip. 
Ругается на эту функцию:
Код

void vLoadIcoToBtn(HWND hBtn, UINT uIconId) {
    HICON hIcon = (HICON)LoadImage(GetModuleHandle(0), MAKEINTRESOURCE(uIconId), IMAGE_ICON, 16, 16, 0);  //<-- эта строка
    SendMessage(hBtn, BM_SETIMAGE, IMAGE_ICON, (LPARAM)hIcon);
}

Здесь на самом деле удечка памяти, если да, то как исправить?



--------------------
PM WWW ICQ Skype Jabber   Вверх
Lazin
Дата 24.9.2008, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 8
Всего: 154



Цитата(MSDN)

When you are finished using a bitmap, cursor, or icon you loaded without specifying the LR_SHARED flag, you can release its associated memory by calling one of the functions in the following table. 
+---------+------------------+
|Resource | Release function |
|Bitmap   | DeleteObject     |
|Cursor   | DestroyCursor    |
|Icon     | DestroyIcon      |
+---------+------------------+


The system automatically deletes these resources when the process that created them terminates; however, calling the appropriate function saves memory and decreases the size of the process's working set.

Код

void vLoadIcoToBtn(HWND hBtn, UINT uIconId) {
    HICON hIcon = (HICON)LoadImage(GetModuleHandle(0), MAKEINTRESOURCE(uIconId), IMAGE_ICON, 16, 16, 0);  //<-- эта строка
    SendMessage(hBtn, BM_SETIMAGE, IMAGE_ICON, (LPARAM)hIcon);
    DestroyIcon (hIcon);
}

PM MAIL Skype GTalk   Вверх
Alca
Дата 24.9.2008, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50



Спасибо, помогло.


--------------------
PM WWW ICQ Skype Jabber   Вверх
Dem_max
Дата 24.9.2008, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



По крайней мере когда юзаешь BCM_SETIMAGELIST не стоит сразу же уничтожать ImageList, а то ничего не будет отображаться.

Это сообщение отредактировал(а) Dem_max - 24.9.2008, 16:39


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Alca
Дата 24.9.2008, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50



Dem_max, я понял, спасибо.


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alca
Дата 26.9.2008, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50



Цитата

The system automatically deletes these resources

Так при чем здесь утечка памяти?


--------------------
PM WWW ICQ Skype Jabber   Вверх
korian
Дата 27.9.2008, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 4
Всего: 17



Цитата(Alca @  26.9.2008,  16:53 Найти цитируемый пост)
Так при чем здесь утечка памяти?

Цитата(Lazin @  24.9.2008,  15:10 Найти цитируемый пост)
The system automatically deletes these resources when the process that created them terminates

вообщем-то все ресурсы освобождаются, когда процесс завершается. и те что выделяються по new.
так что вопрос в данном контексте можно интерпретировать: зачем использовать delete, все равно все освободиться когда-нибудь  smile 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.5388 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.