MFC内存泄漏的问题的其中一种情况

程序运行内存不断增长,起因是MFC的OnDraw函数中DrawGame函数前的代码重复执行导致内存泄漏。通过设置布尔变量控制该部分只在程序开始时运行,并将m_memDC和m_memBmp移至头文件,解决了问题。内存泄漏常见于绘图资源未释放或过度使用,编程时应注意内存管理。
摘要由CSDN通过智能技术生成

今天在编写程序的时候发现程序运行之后占用内存不断的增加,从2M到4M,程序自动中止了;

后来经过一番努力,其实是很简单的问题

MFC中我的OnDraw函数

void CBallView::OnDraw(CDC* pDC)
{	
		CDC *pWindowDC = GetDC();
		CDC m_memDC;
		CBitmap m_memBmp;
		//1.用于映射屏幕的内存设备环境
		//获取游戏窗口的大小用于下面设置内存位图的尺寸
		CRect windowRect;
		GetClientRect(&windowRect);
		m_nWidth = windowRect.Width();
		m_nHeight = windowRect.Height();

		//内存设备环境与屏幕设备环境关联(兼容)
		m_memDC.CreateCompatibleDC(pWindowDC);
		//内存位图与与屏幕关联(兼容),大小为游戏窗口的尺寸
		m_memBmp.CreateCompatibleBitmap(pWindowDC,m_nWidth,m_nHeight);
		//内存设备环境与内存位图关联,以便通过m_memDC在内存位图上作画
		m_memDC.SelectObject(&m_memBmp);
	// TODO: add draw code for native data here
		m_pWhitePen  = new CPen(PS_SOLID,1,RGB(255,255,255));

	//画刷
	m_pBlackBrush  = new CBrush(RGB(0,0,0));
	DrawGame(&m_memDC);
	pDC->BitBlt(0,0,m_nWidth,m_nHeight,&m_memDC,0,0,SRCCOPY);

}

内存泄漏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值