码迷,mamicode.com
首页 > 其他好文 > 详细

内存泄漏,当您使用的 GetDC 方法和 ReleaseDC 方法 CWnd 类版本

时间:2014-11-19 15:40:07      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:使用   sp   for   strong   on   div   代码   bs   ad   

重现行为的步骤

是从 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 类版本

标签:使用   sp   for   strong   on   div   代码   bs   ad   

原文地址:http://www.cnblogs.com/profession/p/4108252.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!