Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 495
от 19.12.2007, 16:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 378, Экспертов: 30
В номере:Вопросов: 1, Ответов: 3


Вопрос № 114004: Здравствуйте уважаемые эксперты! Обнаружил проблему утечки памяти. Не знаю в чём проблема, изходя из WIN API, кажется всё правильно При однократном нажатии на кнопку теряется около 500 - 700 кб....

Вопрос № 114.004
Здравствуйте уважаемые эксперты!

Обнаружил проблему утечки памяти. Не знаю в чём проблема, изходя из WIN API, кажется всё правильно

При однократном нажатии на кнопку теряется около 500 - 700 кб.

Приложение:

Отправлен: 14.12.2007, 15:41
Вопрос задал: Кутубаев Нурлан Юсупович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Geograph
Здравствуйте, Кутубаев Нурлан Юсупович!
Возможно не хватает CloseHandle(hdib);
Ответ отправил: Geograph (статус: 2-ой класс)
Ответ отправлен: 14.12.2007, 16:06

Отвечает: Mihail Yarlykov
Здравствуйте, Кутубаев Нурлан Юсупович!
Для любой функции Create должна быть вызвана функция Delete.
В данном случае необходимо удалять создаваемый HBITMAP:
DeleteObject( hbm );

---------
Нет ничего невозможного!
Ответ отправил: Mihail Yarlykov (статус: 4-ый класс)
Ответ отправлен: 14.12.2007, 16:13

Отвечает: Mitya86
Здравствуйте, Кутубаев Нурлан Юсупович!

Нужно удалять битмапу с помощью DeleteObject, т.к. это объект GDI.
А утечки памяти можно искать с точностью до строки в коде, которая создала неудаленный объект. Для этого надо сделать такие объявления в главном файле проекта(ну или в том модуле, где надо найти утечку):

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

А затем вызвать метод _CrtDumpMemoryLeaks();
Только после этого метода начнется обнаружение утечек. При обнаружении утечки компилятор будет выдавать подобные предупреждения во время выполнения:

Detected memory leaks!
Dumping objects ->
C:PROGRAM FILESVISUAL STUDIOMyProjectsleaktestleaktest.cpp(20) : {18}
normal block at 0x00780E80, 64 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.

Все это применимо к Microsoft Visual Studio 2005, может будет работать и в более ранних версиях, лично не проверял.
Ответ отправил: Mitya86 (статус: 3-ий класс)
Ответ отправлен: 14.12.2007, 18:39


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.65 от 04.12.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное