繁体   English   中英

MFC HBITMAP内存泄漏不会消失

[英]MFC HBITMAP memory leak does not go away

每当执行以下代码时,我在应用程序任务管理器中的内存就会不断增加。 我在stackoverflow上发现了类似的问题,并且像他们所说的那样进行了一些DeleteObject调用,但是当执行此代码时,这仍然无法解决不断增加的内存问题。

如何解决呢? 我究竟做错了什么?

SetControlPicture(const UINT ID_PICTURE_CONTROL)
{
CImage image;
CBitmap bitmap;
HRESULT hresult;    
CStatic* pItem = (CStatic*)GetDlgItem(ID_PICTURE_CONTROL);

hresult = image.Load(_T("./Data/Images/RED_ON.png")); 
                if(hresult != E_FAIL)
                {
                    HBITMAP hBitMap = image.Detach();
                    bitmap.Attach(hBitMap);
                    HBITMAP hBitMapPrev =  pItem->SetBitmap(bitmap);        
                    if (hBitMapPrev)
                    {
                        DeleteObject(hBitMapPrev); // *** do not forget to delete the previously associated bitmap
                    }
                 DeleteObject(hBitMap); 
                }
}

AFAIK根据文档,这必须泄漏。 自通用控制版本。 6.0您可以删除位图。 删除返回的位图是不够的。

http://msdn.microsoft.com/zh-CN/library/windows/desktop/bb760782(v=vs.85).aspx

在Microsoft Win32控件的版本6中,使用STM_SETIMAGE消息传递给静态控件的位图与后续STM_SETIMAGE消息返回的位图相同。 客户端负责删除发送到静态控件的任何位图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM