我是在定时函数中用的,函数大致如下
{CPen pen(PS_SOLID,1,RGB(255,0,0));
CBrush brush(RGB(255,0,0));
...
...
...pen.DeleteObject();
brush.DeleteObject();
}用完已经删除了,可一运行,内存一直是32kb的增长下去,。。求救、????

解决方案 »

  1.   

    从你上面给出的代码看没有泄漏,而且GDI对象也 不可能是32K泄漏
    肯定是其它代码有问题。两种办法:
    使用BOUNDSCHECKER
    使用调试器如CDB,调试一下
      

  2.   

    这么快就有人回复了,,谢谢楼上二位,我刚才说的不太明白。因为程序在单位的机子上,机子不能上网,不能用U盘,所以我只能大致写一下框架。。
    {
    ...
    ...
    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。。
      

  3.   

    上面这段很多重复选入同一个对象的,不知道实际的代码是不是这样。总之不要怕麻烦,每次用完一个画笔或者画刷,都恢复原来的,也就是多用几次:
    dc-> SelectObject(oldFont); 
    每次选进新的画笔/画刷前都写这句。