首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GDI泄漏问题

GDI泄漏问题
EN

Stack Overflow用户
提问于 2010-11-22 20:44:36
回答 2查看 723关注 0票数 3

我在运行以下GDI代码时遇到内存泄漏:

代码语言:javascript
复制
HDC hdcScreen = GetDC(NULL);
HDC hdcMem = CreateCompatibleDC(hdcScreen); 
HBITMAP hbmpOld = (HBITMAP) SelectObject(hdcMem, hBmp); // apparently here is the leak 

// do something

SelectObject(hdcMem, hbmpOld); //placing the old object back. The return object is handled elseware
DeleteDC(hdcMem);  // after CreateCompatibleDC
ReleaseDC(NULL, hdcScreen); // after GetDC

我已经看过类似的线程,比如this,但我找不到问题所在。任何帮助都将不胜感激。

DeleteDC,检查ReleaseDC返回值是否为true (无错误)。

谢谢,塔尔。

EN

回答 2

Stack Overflow用户

发布于 2010-11-23 19:44:55

解决了。问题是hBmp没有正确初始化,所以在SelectObject时发生了崩溃-没有错误,只是函数退出了,跳过了“//做某事”和释放部分。

票数 4
EN

Stack Overflow用户

发布于 2014-12-26 12:58:42

对于将来的参考,一个非常有用的免费工具是NirSoft GDIView,它显示每个进程的GDI使用情况,并在运行时跟踪更改(处理泄漏)。因此,您可以在应用程序中执行操作,并不断检查GDIView,直到您看到计数器增加,然后重复这些操作,直到您查明是哪个导致了不必要的句柄增加。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4245505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档