我删内存的代码:
 CBitmap * m_Bkg;
m_Bkg->DeleteObject();发现没有删,内存还是占用那么多。
但我这样删内存就少了一些:
CBitmap m_Bkg;
m_Bkg.DeleteObject();

解决方案 »

  1.   

    不是吧
    多贴点代码出来
    new 出来的东西不会调析构函数的
    可能用m_Bkg->DeleteObject();只删除一部分内存
    而m_Bkg.DeleteObject();不但通过DeleteObject()释放了部分内存还通过析构函数释放了另一些??
      

  2.   

    我的这个CBitmap * m_Bkg;是定义在类里面的
      

  3.   

    new出来的东西通过Delete删除也会调析构函数的You can use the CGdiObject::DeleteObject function to delete bitmap loaded by the LoadBitmap function, or the CBitmap destructor will delete the object for you. ! WARNING   Before you delete the object, make sure it is not selected into a device context.When a pattern brush is deleted, the bitmap associated with the brush is not deleted. The bitmap must be deleted independently.
    没有道理呀,
    你是怎么看内存的??
      

  4.   

    我原本程序图片显示有问题的,但我将指针换成CBitmap型就好了!不知道什么原因
      

  5.   

    CBitmap * m_Bkg;指针分配内存你肯定是
     m_Bkg = new CBitmap ;的怎么能用m_Bkg->DeleteObject()进行删除呢?new对应着delete
    所以必须用 delete m_Bkg;
      

  6.   

    DeleteObject只是销毁GDI资源,并不是删除分配的指针所指向的内存。new出来的指针用delete删除,CreateObject(CreateBitmap/CreatePen/CreateBrush等都是一样)出来的GDI资源用DeleteObject销毁。这是两个概念。