gdi+对象Pen和SolidBrush内存溢出的问题.

vvvvvvv 2003-11-30 11:47:11
gdi+对象Pen和SolidBrush内存溢出的问题.

Pen pen(m_LineColor,(float)m_LineWidth);
SolidBrush brush(m_FillColor);
......

g->DrawPolygon(&pen,ps,p);
g->FillPolygon(&brush,ps,p);
......
// delete &pen;
// delete &brush;

不加后面delete两行,进行大量绘图工作时内泄漏。
如果加上,绘图时出错。
...全文
152 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Earthdog 2003-11-30
  • 打赏
  • 举报
回复
是不是哦?
我用过gdi+,好像没有你所说的内存溢出的问题,你是用什么检查的?

你当然不能加delete了,因为你的变量不是指针,而且是局部变量,因为他们是类,在函数退出的时候,是会自动调用析构函数的,你将其给delete掉了,系统再析构的时候当然会出错了
Earthdog 2003-11-30
  • 打赏
  • 举报
回复
其实Dispose只是提供出来在内存比较紧张的情况下,让用户显示调用来将资源释放出来,析构中也会调用这个函数的
ItomCat 2003-11-30
  • 打赏
  • 举报
回复
你不是通过new来获得一个新对象,当然就不要delete罗
除非你是在gdi中如:
Pen *Mypen;
Mypen=new Pen;
Mypen->CreatePen(PS_SOLID,1,RGB(255,0,0));
......
用完后是要delete(Mypen);
而GDI+中Pen得构造函数只有两种:

Pen(Brush*,REAL);
Pen(Color&,REAL);
所以不能用delete。我记得有一个Dispose()到是有这个功能。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧