最近在学mfc,对于其中的绘图深不以为然,合上书一试。呵呵,写了几行就有了内存泄露(应该是),真是要命
源码如下(mfc的OnPaint函数)
void CChildView::OnPaint() 
{
CPaintDC dc(this); // 用于绘制的设备上下文

// TODO: 在此处添加消息处理程序代码 CPen *pPen=NULL;
CPen *pPen_old=NULL;
pPen_old=new CPen();
pPen=new CPen();
pPen->CreatePen(PS_SOLID,2,RGB(0,0,255));
//----------------------------------------------------------------------------------------------------
pPen_old=dc.SelectObject(pPen);
dc.SelectObject(pPen_old);
//------------------------------------------------------------------------------------------------------------------------------------
pPen->DeleteObject();
pPen_old->DeleteObject();
if(pPen_old!=NULL)
{
delete pPen_old;
pPen_old=NULL;
} if(pPen!=NULL)
{
delete pPen;
pPen=NULL;
}
// 不要为绘制消息而调用 CWnd::OnPaint()
}
不知道为什么,注释掉delete pPen_old;就好了。开始以为是cpen析构函数过于严格,就在delete之前将pPen_old成员m_hObject置为空,呵呵,还是不行、、、、、到底为什么呢,zhe