hbitmap的内存泄漏问题

kantonwang_vc 2007-02-08 04:10:28
有一块bits数据,每次都会生成hbitmap,下一次再有bits数据的时候,删除原先的hbitmap,再生成新的hbitmap,现在发现运行的时候有内存泄漏,经过调查,确认是每次生成hbitmap造成的,以下为基本src
if(m_bitmap)
{
DeleteObject(m_bitmap);
m_bitmap = NULL;
}
m_bitmap = MakeBitmap();
MakeBitmap函数中就是调用CreateDIBitmap(hDc, &bitinfo.bmiHeader, CBM_INIT, lpBits, &bitinfo, DIB_RGB_COLORS)。

后来改用SetDIBits,还是内存泄漏,请大家帮忙看看是什么原因。

...全文
323 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kantonwang_vc 2007-02-14
  • 打赏
  • 举报
回复
已经解决,是没有releasedc
lidongri 2007-02-08
  • 打赏
  • 举报
回复
if(m_bitmap)
{
DeleteObject(m_bitmap);
m_bitmap = NULL;
}
//添加试试
m_bitmap = new HBITMAP;

m_bitmap = MakeBitmap();
kantonwang_vc 2007-02-08
  • 打赏
  • 举报
回复
楼上的朋友,个人认为没有,也给出src
HBITMAP MakeBitmap(HDC hDc, LPBYTE lpBits, long lWidth, long lHeight, WORD wBitCount)
{
BITMAPINFO bitinfo;

memset(&bitinfo, 0, sizeof(BITMAPINFO));

bitinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bitinfo.bmiHeader.biWidth = lWidth;
bitinfo.bmiHeader.biHeight = lHeight;
bitinfo.bmiHeader.biPlanes = 1;
bitinfo.bmiHeader.biBitCount = wBitCount;
bitinfo.bmiHeader.biCompression = BI_RGB;
bitinfo.bmiHeader.biSizeImage = lWidth*lHeight*(wBitCount/8);
bitinfo.bmiHeader.biXPelsPerMeter = 96;
bitinfo.bmiHeader.biYPelsPerMeter = 96;
bitinfo.bmiHeader.biClrUsed = 0;
bitinfo.bmiHeader.biClrImportant = 0;

return CreateDIBitmap(hDc, &bitinfo.bmiHeader, CBM_INIT, lpBits, &bitinfo, DIB_RGB_COLORS);
}
pomelowu 2007-02-08
  • 打赏
  • 举报
回复
MakeBitmap里边是否有内存泄露?HBITMAP一般是GDI泄露,和内存泄露一般不会直接有关系。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧