一个程序通过任务管理器,发现上面三种泄漏都有,头大如斗。在类中定义:
HDC hYDC;hYDC=GetWindowDC(hYwnd);
...
ReleaseDC(hYwnd, hYDC);另外有定义:
HDC memDC;memDC=CreateCompatibleDC(hDC);
...
DeleteDC(memDC);这样的操作是否就完全删除了?请高手们帮忙啊。

解决方案 »

  1.   

    任务管理器中发现内存,句柄,GDI都在不停地增加。
      

  2.   

    另外有定义:
    HBITMAP hBmp;hBmp=CreateCompatibleBitmap(hDC, bmp_width, bmp_height);
    ...
    DeleteObject(hBmp);
    这样是否也完全删除了,还要不要CloseHandle(hBmp)?
      

  3.   

    GDI对象都用DeleteObject,不能用CloseHandle
      

  4.   

    SelectObject时要保存返回值,绘制完成后再次SelectObject选入前面的返回值,然后再销毁自己创建的对象。
      

  5.   

    嗯,同意用工具来检测,特别是代码多的情况下。例如Boundscheker、Insure++都不错。
      

  6.   

    同意这个,有时候你DeleteObject未必就成功。