资源未释放引起的内存漏洞模拟

    在MFC编程中,我们常常创建一些GDI资源并通过指针使用它们;

    例如: 

CClientDC dc(this);
CBrush *m_pBrush=new CBrush(RGB(255,0,0));
dc.SelectObject(m_pBrush);
dc.Rectangle(0,0,100,100);
delete m_pBrush;
m_pBrush=NULL;

     但有时候,我们常常会忘记释放资源指针;如果程序多次运行上述代码片段,在任务管理器中可以观察到程序占用内存将不断增加,同时产生大量内存碎片;严重可能会引起系统内存不够用,导致其他程序不能正常运行或死机。

    其原理可用下述程式模拟:

char *pMem=NULL;
for(;;)
{
	pMem=new char[1024];
}
 

你可能感兴趣的:(MFC)