2014-02-04 4 views
0

Я столкнулся с проблемой утечки GDI в нашем проекте, поэтому я начал искать возможные проблемы. Я нашел место, где разработчик создал новые экземпляры значков с LoadIcon, и я знаю, что мы должны удалить ресурс с DestroyIcon при закрытии элемента, который его встроил. Я не знаю, что если CImageList автоматически вызывает это на добавленных элементах или нет? На данный момент я не нашел точных ответов.Удаляет ли CImageList ресурсы?

Заранее спасибо.

+0

Я согласен с тем, что с помощью инструмента, который поможет вам различить, какой ресурс протекает (шрифт, растровое изображение, кисть, ручка и т. Д.), Ваша работа станет намного проще. Также ресурсы, выбранные в DC, но не выбранные ** до удаления **, являются для меня наиболее распространенной причиной утечек. – user1793036

+0

Я использовал один и нашел некоторые особые случаи, когда эта утечка произошла. Затем я искал другие места, где у нас схожие проблемы, и нашел это. – newhouse

ответ

1

CImageList освободит все элементы, когда он будет выпущен. На основе msdn. Если список изображений был создан с помощью нового оператора, вы должны уничтожить объект CImageList, когда вы закончите с ним, что означает в descontructor CImageList, он освободит все его элементы.

Вы можете попробовать использовать DebugDiag для устранения проблем с памятью/утечкой GDI, это лучше, чем просто смотреть в код, чтобы идентифицировать утечку.