Использование GetGuiResources - PullRequest
       6

Использование GetGuiResources

1 голос
/ 23 января 2009

Является ли хорошей идеей использовать GetGuiResources(GetCurrentProcess(), GR_GDIOBJECTS) в начале WinMain и перед последним возвратом для обнаружения утечек GDI или, более конкретно, объектов, которые я забыл выпустить?
Также я в настоящее время нахожусь интересно, почему первый вызов в моей программе возвращает 4, когда еще нет окна.

Ответы [ 3 ]

2 голосов
/ 23 января 2009

В большинстве случаев достаточно использовать Process Explorer . Оставьте окно открытым, показывая GDI-дескрипторы вашего процесса (щелкните правой кнопкой мыши по столбцам, выберите «Выбрать столбцы», а затем установите флажок «Объекты GDI» на вкладке «Память процесса»).

Во время работы приложения следите за количеством дескрипторов GDI - если оно увеличивается и никогда не возвращается, вы знаете, что произошла утечка.

1 голос
/ 23 января 2009

Код этой статьи в журнале MSDN предоставил удобный способ устранения утечек из-за обработки GDI. К сожалению, исходный код больше не доступен ...

0 голосов
/ 23 января 2009

Хотя это скажет вам, если вы пропустили какие-либо объекты GDI, это не скажет вам ничего о том, какие объекты GDI вы пропустили. В нетривиальной программе я не вижу в этом особой помощи.

Если вы хотите отслеживать объекты GDI, я полагаю, что есть некоторые счетчики производительности, которые отображают количество дескрипторов объектов GDI, которые в настоящее время выделены в процессе. Со временем вы можете наблюдать это, чтобы лучше понять, где происходит утечка вашей программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...