游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1732|回复: 0

关于m_opengl

[复制链接]

1

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2008-3-5 00:10:00 | 显示全部楼层 |阅读模式
作者的做法是在winmain所在文件里的开始声明一个OpenGL* m_opengl;,然后在winmain里m_opengl = new OpenGL();
问题是winmain结束时,m_opengl根本没被删除掉!这就造成内存空间泄露。虽然不多吧,但是这种new了不delete的做法是很不好的。
由于没有m_opengl没被删除掉,析构函数~OpenGL()也就从未被调用,于是
OpenGL::~OpenGL()
{        CleanUp();
}
CleanUp();也没被调用。

所以作者就只好在消息处理函数中响应WM_CLOSE消息,调用CleanUp()。
case WM_CLOSE:                                                // 关闭窗口
        m_OpenGL->CleanUp();                        // 结束处理

如果是这样的话,还不如直接在winmain外声明一个OpenGL m_opengl;,然后把构造函数和析构函数置空,另写函数,在需要时调用即可。

不知道作者是怎么看这个问题的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 07:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表