CStatic::SetBitmap導致的內存泄露問題


由於需要動態的改變控件的圖標顯示,程序中對同一控件多次調用了SetBitmap方法,結果導致了內存泄露。

解決方法如下:

    HBITMAP hBmpOn;
    HBITMAP oldBmp;
    image.Load(_T("res/led_green.png"));
    hBmpOn = image.Detach();


                oldBmp = (*it)->SetBitmap(hBmpOn);
                if ( oldBmp != NULL )
                {
                    DeleteObject(oldBmp);
                }

    if ( hBmpOn != NULL )
    {
        DeleteObject(hBmpOn);
    }

關鍵是需要手動將以前set過的資源用DeleteObject釋放掉。

問題雖然解決了,但是不太明白為什么SetBitmap函數內部為什么沒有自動把沒用的資源釋放掉?

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM