弱问,CreateCompatibleBitmap和DeleteObject居然会出现内存泄漏

yuanzfy 2012-05-14 02:37:40
下面这段很简单的代码怎么都会产生内存泄漏,程序内存一直在增加。。。。。求教

void CMyDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CBitmap MemBitmap;//定义一个位图对象
if(!MemBitmap.CreateCompatibleBitmap(this->GetDlgItem(IDC_STATIC_TEMP)->GetDC(), 600, 600))
AfxMessageBox(L"创建失败");
if(!MemBitmap.DeleteObject())
AfxMessageBox(L"释放失败");
CDialogEx::OnTimer(nIDEvent);
}
...全文
189 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanzfy 2012-05-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
GetDC后 在不用的时候需要 ReleaseDC
这样试一下:
在if(!MemBitmap.DeleteObject())这句前面加一句:
ReleaseDC(this->GetDlgItem(IDC_STATIC_TEMP)->GetDC());
[/Quote]
哈哈,长见识了,是对的,这个也要释放。
yuanzfy 2012-05-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
GetDC后 在不用的时候需要 ReleaseDC
这样试一下:
在if(!MemBitmap.DeleteObject())这句前面加一句:
ReleaseDC(this->GetDlgItem(IDC_STATIC_TEMP)->GetDC());
[/Quote]
这样啊,我还以为GetDC()得到的cdc是不需要释放的,这就去试试,谢谢。
liuli7786 2012-05-14
  • 打赏
  • 举报
回复
GetDC后 在不用的时候需要 ReleaseDC
这样试一下:
在if(!MemBitmap.DeleteObject())这句前面加一句:
ReleaseDC(this->GetDlgItem(IDC_STATIC_TEMP)->GetDC());



15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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