zoukankan      html  css  js  c++  java
  • BUG: GetDC() ReleaseDC()引起的内存泄漏

    调用CWnd::GetDC函数跟CWnd::ReleaseDC函数的代码运行时,会出现 4 个字节的内存泄漏。

    Microsoft 已经确认这是在本文开头部分列出的 Microsoft 产品中的缺陷。

    若要避免此问题,请使用GetDC方法和ReleaseDC方法的CWnd类版本。使用GetDC函数和ReleaseDC函数。

    http://support.microsoft.com/kb/819635/zh-cn

    再现现象的步骤

    中的方法是从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);
        }
    |=======================================| | 既然选择了远方,便只顾风雨兼程! | |=======================================|
  • 相关阅读:
    jQuery文档操作之删除操作
    jQuery文档操作之修改操作
    jQuery文档操作之克隆操作
    jQuery文档操作之插入操作
    jQuery的使用
    js Demo
    使用jQuery操作input的value值
    Flask-Request
    Flask-Response
    Flask-认识flask
  • 原文地址:https://www.cnblogs.com/mr-m/p/3542556.html
Copyright © 2011-2022 走看看