GDI中循环调用CreatePen是否会造成内存泄露吗?
hPen=CreatePen(PS_SOLID,1,RGB(0x50,0xa0,0xa0));这句有没有反复生成对象。把这句放到循环中会造成内存泄露吗不进行DeleteO...
hPen = CreatePen(PS_SOLID,1,RGB(0x50,0xa0,0xa0));
这句有没有反复生成对象。把这句放到循环中会造成内存泄露吗
不进行DeleteObject(hPen);
是否会造成内存泄露。
环境C++,Win32,GDI 展开
这句有没有反复生成对象。把这句放到循环中会造成内存泄露吗
不进行DeleteObject(hPen);
是否会造成内存泄露。
环境C++,Win32,GDI 展开
8个回答
展开全部
会的。对于会频繁用到的诸如需要new,create之类的对象,最好弄个全局的。因为频繁申请释放内存会造成程序效率降低,出错率提高,而且会造成内存碎片问题。总之坚持一个原则,在保证代码可读性的前提下,能用一个变量不要用多个变量,能用全局变量或临时变量不要用动态变量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-01-06
展开全部
CreatePen后要删除的,不然会造成隐式内存泄露
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
反复调用确实会每次生成1个GDI对象,
winxp默认每个进程最高支持1万个GDI对象。
达到之后将无法生成新对象
文档上说
“When you no longer need the pen, call the DeleteObject function to delete it.”
不需要时就要删除。
DeleteObject可以删除创建的对象,也可以删比如像WHITE_PEN这样的stock预置对象,但不会有效果。
winxp默认每个进程最高支持1万个GDI对象。
达到之后将无法生成新对象
文档上说
“When you no longer need the pen, call the DeleteObject function to delete it.”
不需要时就要删除。
DeleteObject可以删除创建的对象,也可以删比如像WHITE_PEN这样的stock预置对象,但不会有效果。
来自:求助得到的回答
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
对于windows这些handle,是由windows来管理的,可以说是有限的资源。所以最好 不要循环太多次,尤其是长时间跑的程序。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询