关于opengl内存泄露的问题?

海蓝光科技 2003-09-18 12:45:35
下面这个代码在debug下运行后
glPushMatrix();
auxWireCube( m_strGLCubedata.dCubeSize);
glPopMatrix();
会出现内存泄露
Detected memory leaks!
Dumping objects ->
{145} normal block at 0x04BB2530, 16 bytes long.
Data: < p% > 01 00 00 00 00 00 00 00 01 00 00 00 70 25 BB 04
{144} normal block at 0x04BB2570, 8 bytes long.
Data: < > 00 00 00 00 00 00 00 00
Object dump complete.
应该怎么解决这个问题呢?????
...全文
325 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
海蓝光科技 2003-09-19
  • 打赏
  • 举报
回复
只好自己写了
autoegg 2003-09-19
  • 打赏
  • 举报
回复
为什么不用opengl中的二次曲面函数呢?
海蓝光科技 2003-09-18
  • 打赏
  • 举报
回复
找了半天实在不知道怎么解决
海蓝光科技 2003-09-18
  • 打赏
  • 举报
回复
谢谢
我用了也下也是可以的
不过我还要画圆
而且是用鼠标画图,并且自己保存数据的
这样做太麻烦了
junglesong 2003-09-18
  • 打赏
  • 举报
回复
我写了一个粗糙没有优化的,顶点送的太多,如果调用不是太频繁可以用用,经检查没有内存泄露。
函数:
void glDrawWireCube(const float fWidth)
{
glBegin(GL_LINE_LOOP);
glVertex3f(fWidth/2,fWidth/2,fWidth/2);
glVertex3f(-fWidth/2,fWidth/2,fWidth/2);
glVertex3f(-fWidth/2,-fWidth/2,fWidth/2);
glVertex3f(fWidth/2,-fWidth/2,fWidth/2);
glEnd();

glBegin(GL_LINE_LOOP);
glVertex3f(fWidth/2,fWidth/2,-fWidth/2);
glVertex3f(-fWidth/2,fWidth/2,-fWidth/2);
glVertex3f(-fWidth/2,-fWidth/2,-fWidth/2);
glVertex3f(fWidth/2,-fWidth/2,-fWidth/2);
glEnd();

glBegin(GL_LINES);
glVertex3f(fWidth/2,fWidth/2,-fWidth/2);
glVertex3f(fWidth/2,fWidth/2,fWidth/2);

glVertex3f(-fWidth/2,fWidth/2,-fWidth/2);
glVertex3f(-fWidth/2,fWidth/2,fWidth/2);

glVertex3f(-fWidth/2,-fWidth/2,-fWidth/2);
glVertex3f(-fWidth/2,-fWidth/2,fWidth/2);

glVertex3f(fWidth/2,-fWidth/2,-fWidth/2);
glVertex3f(fWidth/2,-fWidth/2,fWidth/2);
glEnd();
}

调用:
glPushMatrix();
glDrawWireCube(15.0f);
glPopMatrix();
海蓝光科技 2003-09-18
  • 打赏
  • 举报
回复
我在查看看吧
应该会有一个释放的函数吧
我现在数据就保存一个cubesize如果自己写画图函数还要添加好多数据进去
junglesong 2003-09-18
  • 打赏
  • 举报
回复
肯定是aux库的问题了,自己写吧,也不难的。
junglesong 2003-09-18
  • 打赏
  • 举报
回复
要不自己写一个画立方体框的函数吧,也许慢一些,但这样不会沼成内存泄露。
海蓝光科技 2003-09-18
  • 打赏
  • 举报
回复
to : junglesong(在黑暗中举起探索的火炬)
我照你那样改了试了一下还是出现同样的问题
junglesong 2003-09-18
  • 打赏
  • 举报
回复
我这边程序也是这样,你载入glut库看看?
海蓝光科技 2003-09-18
  • 打赏
  • 举报
回复
确定是那个问题了,如程序改为如下画三角形,也不会出现这个问题的
glPushMatrix();
glBegin(GL_TRIANGLES);
glVertex2f(0, 0);
glVertex2f(0.f, 2.8f);
glVertex2f(3.3f, 0.f);
glEnd();
glPopMatrix();

junglesong 2003-09-18
  • 打赏
  • 举报
回复
那这样试试:
float fRadius=2.0f;

glPushMatrix();
auxWireCube(fRadius);
glPopMatrix();
还有没有?


海蓝光科技 2003-09-18
  • 打赏
  • 举报
回复
是的
glPushMatrix();
auxWireCube( 2。0f);
glPopMatrix();
如果把上面的改为:
glPushMatrix();
// auxWireCube( 2。0f);
glPopMatrix();
就不会出现这种情况了。是不是要在什么地方处理一下呢?


junglesong 2003-09-18
  • 打赏
  • 举报
回复
glPushMatrix();
auxWireCube( 2。0f);
glPopMatrix();
会出现内存泄露吗?有的话就是aux库的问题了,换用glut库的试一试?
junglesong 2003-09-18
  • 打赏
  • 举报
回复
glPushMatrix();
auxWireCube( 2.0f);
glPopMatrix();

这样有没有内存泄露??

19,469

社区成员

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

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