Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Контроль над GDI объэктами

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Exception_Granted



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Программа написана на VS v6.0. Запускаю в Debug режиме. В программе обнаружено место где происходит постоянное увеличение GDI объэктов без последующего их освобождения. В Release режиме происходит то же самое. Кроме того программа тестирована на 4 компютерах, еффект этот проявляется только на одном (запущены процесы на нем только системные, и собственно сама программа).
 
OS: WinNt 2000
 
В чем может быть проблема ? Помогите с советом. Или как можно сделать какой-нить лог в который бы записывались все созданные GDI объэкты после какого-то предела, ну скажем 1000.

Всего записей: 76 | Зарегистр. 25-01-2005 | Отправлено: 14:03 28-02-2005
WiseAlex



Софтовых дел М...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Exception_Granted
Все ли компьютеры идентичны в плане SP к win2000, в плане конфигурации самой программы и т.д. - проблема 1 из 4 явно софтовая
для поиска можно использовать DevPartner BoundsChecker см варезник
лог в этом виде не поможет - gdi объекты создаются и уничтожаются постоянно  
в гниге Фень Юаня есть программа показывающая число GDi объектов в приложения по типам (сколько brush pen и т.д.) - моги кинуть

Всего записей: 1001 | Зарегистр. 02-03-2003 | Отправлено: 14:38 28-02-2005
Exception_Granted



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WiseAlex
 

Цитата:
Все ли компьютеры идентичны в плане SP к win2000, в плане конфигурации самой программы

Да, все идентичны.
 
А не могли бы мне кинуть эту книгу (Фень Юаня) и заодно эту прогу. Насколько я слышал про эту книгу - весьма толково написано програмирование графики под Винду.
 
Буду очень признателен.

Всего записей: 76 | Зарегистр. 25-01-2005 | Отправлено: 18:04 28-02-2005
Men_In_Black



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Exception_Granted

Цитата:
В программе обнаружено место где происходит постоянное увеличение GDI объэктов

Спрашивается, зачем чего-то там логить, если уже найдено место, где есть утечка? Может быть имеет смысл не мудрить, а привести кусок кода, где жрутся ресурсы?  
 
В качестве общей рекомендации, могу лишь сказать, что чаще всего к утеканию памяти и другим проблемам ведут две вещи:
 
1. Заселектили новый объект GDI, потом забыли вернуть старый. Т.е., например, правильно делать так:

Код:
CFont *pOldFont = pDC->SelectObject(GetFont());
...
pDC->SelectObject(pOldFont);

Вообще-то, я не совсем уверен, что при невозврате возникнет именно утечка памяти (возможно, кто-то меня поправит). Но то, что делать так нехорошо и что от этого могут быть проблемы - общеизвестный факт. Например, где-нибудь неожиданно вместо нормального шрифта вылезет жирный и пойди найди, в каком месте ошибка...
 
2. Захватили контекст, потом забыли его "отпустить". Должно быть так:

Код:
CDC *pDC = GetDC();
...
ReleaseDC(pDC);

В последнем случае (но без вызова ReleaseDC) ресурсы могут утекать прямо-таки с фантастической скоростью...

Всего записей: 96 | Зарегистр. 27-08-2003 | Отправлено: 10:59 01-03-2005 | Исправлено: Men_In_Black, 11:11 01-03-2005
WiseAlex



Софтовых дел М...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Exception_Granted
книга 9М - посмотри в варезнике, она там часто проскакивает (если там не помогут, то тогда попробую скинуть - у меня повременка), программу сейчас скину на профильное мыло

Всего записей: 1001 | Зарегистр. 02-03-2003 | Отправлено: 12:37 01-03-2005 | Исправлено: WiseAlex, 12:56 01-03-2005
Exception_Granted



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Men_In_Black

Цитата:
Спрашивается, зачем чего-то там логить, если уже найдено место, где есть утечка?

Суть в том, что в том месте все "чисто". Кругом где ресурсы кепчатся, они потом отпускаютя. В етом плане сделано все как надо. Прикол то в том,  что на других компутерах это не проявляется.
Я вот тут че подумал,  а может это и не мои ресурсы ? Например звуковой или видео кодеки могут залесть в адресное простраство и там себе ресурсы плодить.
Свой звук в програме я отключил - но проблема осталась.

Всего записей: 76 | Зарегистр. 25-01-2005 | Отправлено: 17:16 01-03-2005
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Контроль над GDI объэктами


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru