游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1864|回复: 2

问一下,一句delete mRoot到底做了哪些事情?

[复制链接]

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
发表于 2008-6-22 10:04:00 | 显示全部楼层 |阅读模式
根据自己的试验,delete mRoot之后全部由Root 创建出来的东西都被delete,如SceneMgr,RenderWindow等等,但是Camera是由SceneManager创建出来的,也在这一句同时被delete了,而我用的RaySceneQuery也是由SceneManager创建出来的,却没有被delete,而需要调用 SceneManager::destroyQeury来进行销毁。

delete mRoot到底做了些什么,又没做什么?

另外,我用new出来的CEGUISystem和CEGUIRenderer,我在程序结束时没有delete他们,却发现这两个也被delete了,是什么时候它们被delete的?

9

主题

249

帖子

260

积分

中级会员

Rank: 3Rank: 3

积分
260
发表于 2008-6-22 10:41:00 | 显示全部楼层

Re:问一下,一句delete mRoot到底做了哪些事情?

这样的问题,只能靠自己调试才能知道吧!

猜下可能情况:
析购函数前没virtual
delete 的函数指针类型不对

都可能导致子类的析购函数不被调用

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
 楼主| 发表于 2008-6-22 12:03:00 | 显示全部楼层

Re:问一下,一句delete mRoot到底做了哪些事情?

没错,主题里面正式我经过调试发现的一个现象,我只是想问问,有没有一个规律,哪些东西在delete Root的时候会被销毁,哪些不会。
一个root里面东西太多,我对Ogre源码的了解还不是很到位,无法一行一行去分析,有没有有经验的人总结出一张表,能列举出会销毁的是什么,不会销毁的又是什么?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 05:23

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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