void CTestDlg::OnButton1()
{
CBrush brush;
brush.CreateSolidBrush(RGB(255,0,255));
brush.DeleteObject();
}
{
CBrush brush;
brush.CreateSolidBrush(RGB(255,0,255));
brush.DeleteObject();
}
解决方案 »
- vs2010 glut32.lib总是出错
- EDIT回车事件的捕获(PreTranslateMessage())。
- 关于TCP编程中多次发送数据问题
- hao123打不开
- 大家节日快乐噢。。。
- 图象处理 算法,问题是:如何动态获得图象的大小(象素个数),以便方便的存储每个象素。我以前处理的是小图象,所以定义的是1000*1000的
- ★★如何得到PC硬件的序号?
- 在程序启动时需要输入正确密码才能打开主界面,否则退出。该怎么实现?
- Recordset如何获得数据库其他用户所作的更改!
- 求教啊!关于mfc日期控件显示文本的问题
- SetupBuilder Professional 1.50sc 的相关问题(急)
- 请问如何用C语言制作透明水印?
这段代码不会有泄露,你可以试一下连续点这个按钮,GDI句柄数不会一直增加,不清楚任务管理器是根据什么来显示的,把这几行代码改成::CreateSolidBrush和::DeleteObject也是一样。
也许根本没有泄露,可能是任务管理器未能实时的刷新GDI数量吧。
brush.CreateSolidBrush(RGB(0xff,0x00,0x00));
brush.DeleteObject();
brush.CreateSolidBrush(RGB(0xff,0x00,0x11));
brush.DeleteObject();
brush.CreateSolidBrush(RGB(0xff,0x00,0x22));
brush.DeleteObject();
brush.CreateSolidBrush(RGB(0xff,0x00,0x33));
brush.DeleteObject();
brush.CreateSolidBrush(RGB(0xff,0x00,0x44));
brush.DeleteObject();
{
CBrush* brush;
brush->CreateSolidBrush(RGB(255,0,255));
brush->DeleteObject();
brush=NULL;
}
看下用指针来操作是不是要好点。
CBrush brush;
brush.CreateSolidBrush(RGB(0xff,0x00,0x00));
brush.DeleteObject();
CBrush brush1;
brush1.CreateSolidBrush(RGB(0xff,0x00,0x11));
brush1.DeleteObject();
CBrush brush2;
brush2.CreateSolidBrush(RGB(0xff,0x00,0x22));
brush2.DeleteObject();
CBrush brush3;
brush3.CreateSolidBrush(RGB(0xff,0x00,0x33));
brush3.DeleteObject();
CBrush brush;
brush.CreateSolidBrush(RGB(0xff,0x00,0x00));
brush.DeleteObject();
我想提一句就是会不会跟这个对象名有关系brush 很像个关键字. 实在不知道为什么会泄漏.舆论..
{
CBrush brush(RGB(255,0,255));
}
{
for(int i=0;i<10000000;i++)
{
CBrush brush;
brush.CreateSolidBrush(RGB(255,0,255));
brush.DeleteObject();
}
}先看看这个是什么现象,会不会出现GDI资源枯竭?按照msdn的说法,这样做是不会有问题的,你看到的泄漏可能是表象,进程结束的时候可能会释放
{
for(int i=0;i <10000000;i++)
{
CBrush brush;
brush.CreateSolidBrush(COLORREF(i));
brush.DeleteObject();
}
}
{
for(int i=0;i <10000000;i++)
{
CBrush brush;
brush.CreateSolidBrush(COLORREF(i));
brush.DeleteObject();
}
}
void CTestDlg::OnButton1()
{
CBrush brush;
for(int i=0;i <10000000;i++)
{
brush.CreateSolidBrush(COLORREF(i));
brush.DeleteObject();
}
}
你这样try 一下了,这样才和你本来要问的问题符合亚,呵呵!