首页 > 代码库 > 内存泄漏,当您使用的 GetDC 方法和 ReleaseDC 方法 CWnd 类版本
内存泄漏,当您使用的 GetDC 方法和 ReleaseDC 方法 CWnd 类版本
重现行为的步骤
是从 CWnd 派生的类的一个方法中插入下面的代码在您的应用程序中:
CDC *pDC; RECT rect; GetClientRect (&rect); for (int i = 0; i < 1000; i++) { pDC = GetDC (); ReleaseDC (pDC); }
如果运行此代码,并且之前和之后运行该代码然后检查系统内存您注意到系统内存泄漏每次迭代的四个字节。 如果您以下面的代码更改该代码,内存泄漏不会发生:
HDC hDC; RECT rect; ::GetClientRect (m_hWnd, &rect); for (int i = 0; i < 1000; i++) { hDC = ::GetDC (m_hWnd); ::DrawText (hDC, L"Testing...", 10, &rect, DT_CENTER); ::ReleaseDC (m_hWnd, hDC); }
经测试上述方法在wince下还是泄露因此建议在wince下请尽量使用
CClient DC(this);或CPaintDC dc(this);
代替使用GetDC()及ReleaseDC();
内存泄漏,当您使用的 GetDC 方法和 ReleaseDC 方法 CWnd 类版本
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。