一个画图程序内存泄露,高手给看下,附有源码
void COScopeCtrl::InvalidateCtrl()
{
_CrtDumpMemoryLeaks();
//初始化参数
//初始化位置参数
CBrush *oldbrush;
CPen *oldPen ;
CRect rect[7];
// rect=new CRect[7];
CString strTemp ;
double numtemp;
double numinterval;
//填充CRgn的画刷
CBrush brA, brB;
//设置字体颜色
CFont nunberfont, *oldFont ;
CFont nunberfont1;
CFont nunberfont2;
// 绘制刻度变量
int i,x5,y5,x6,y6;
int biger_interval=4; //大刻度数
//绘制屏蔽线
CPen temppen/*,temppen1*/;
//绘制边框
CPen form_pen;
//表盘边界
int x1,x2,x3,x4,y1,y2,y3,y4;
SetCentre();
CheckB();
.......
// in case we haven't established the memory dc's
CClientDC dc(this) ;
// if we don't have one yet, set up a memory dc for the grid
if (m_dcindex.GetSafeHdc() == NULL)
{
m_dcindex.CreateCompatibleDC(&dc) ; //内存DC
m_bitmapidex.CreateCompatibleBitmap(&dc, m_rectClient.right-m_rectClient.left, m_rectClient.bottom-m_rectClient.top) ;
m_pbitmapOldindex = m_dcindex.SelectObject(&m_bitmapidex) ;
}
else
{
m_dcindex.SelectObject(m_pbitmapOldindex);
m_dcindex.DeleteDC();
m_bitmapidex.DeleteObject();
m_pbitmapOldindex->DeleteObject();
m_dcindex.CreateCompatibleDC(&dc) ; //内存DC
m_bitmapidex.CreateCompatibleBitmap(&dc, m_rectClient.right-m_rectClient.left, m_rectClient.bottom-m_rectClient.top) ;
m_pbitmapOldindex = m_dcindex.SelectObject(&m_bitmapidex) ;
}
// m_dcindex.CreateCompatibleDC(&dc) ; //内存DC
// m_bitmapidex.CreateCompatibleBitmap(&dc, m_rectClient.right-m_rectClient.left, m_rectClient.bottom-m_rectClient.top) ;
// m_pbitmapOldindex = m_dcindex.SelectObject(&m_bitmapidex) ;
m_dcindex.SetBkColor (m_crBackColor) ;
m_dcindex.FillRect(m_rectClient, &m_brushBack) ;