我是在定时函数中用的,函数大致如下
{CPen pen(PS_SOLID,1,RGB(255,0,0));
CBrush brush(RGB(255,0,0));
...
...
...pen.DeleteObject();
brush.DeleteObject();
}用完已经删除了,可一运行,内存一直是32kb的增长下去,。。求救、????
{CPen pen(PS_SOLID,1,RGB(255,0,0));
CBrush brush(RGB(255,0,0));
...
...
...pen.DeleteObject();
brush.DeleteObject();
}用完已经删除了,可一运行,内存一直是32kb的增长下去,。。求救、????
肯定是其它代码有问题。两种办法:
使用BOUNDSCHECKER
使用调试器如CDB,调试一下
{
...
...
CPen newpen,newpen1,newpen2,newpen3;
CBrush newbursh,newbrush1,newbrush2;
newpen.CreatePen(PS_SOLID,2,RGB(0,255,0));
newpen1.CreatePen(PS_SOLID,2,RGB(0,255,0));
newpen2.CreatePen(PS_SOLID,2,RGB(0,255,0));
newpen3.CreatePen(PS_SOLID,2,RGB(0,255,0));newbrush.CreateSolidBrush(RGB(255,70,80));
newbrush1.CreateSolidBrush(RGB(255,70,80));
newbrush2.CreateSolidBrush(RGB(255,70,80));CPen *poldpen=dc->SelectObject(&newpen);
CBrush *poldbrush=dc->SelectObject(&newbrush);
...
...
dc->SelectObject(&newpen3);
....
...
dc->SelectObject(&newpen);
dc->SelectObject(&newbrush);
...
...
oldFont=dc->SelectObject(&font1);
...
...
dc->SelectObject(&newpen1);
dc->SelectObject(&newbrush1);
...
...
...
dc->SelectObject(&newpen2);
dc->SelectObject(&newbrush2);
....
....dc->SelectObject(oldFont);
dc->SelectObject(poldbrush);
dc->SelectObject(poldpen);
// 删除
newpen.DeleteObject();
newpen1.DeleteObject();
newpen2.DeleteObject();
newpen3.DeleteObject();newbrush.DeleteObject();
newbrush1.DeleteObject();
newbrush2.DeleteObject();}
函数整体就是这样。。程序一运行,内存会不断增长,每次32K。。
dc-> SelectObject(oldFont);
每次选进新的画笔/画刷前都写这句。