查看: 1209|回复: 2

一个节点被删除后不再有父节点,但是其空间为什么没有被释放?

[复制链接]

该用户从未签到

发表于 2012-11-28 16:47:44 | 显示全部楼层 |阅读模式
本帖最后由 wanggang8826 于 2012-11-28 16:51 编辑

俺遇到这样的问题,一个节点node经过一系列的使用之后,最终将其删除,可以确保node的父节点个数为0,为什么它占用的内存没有被释放掉?
一般情况下:
osg::Group* g = new osg::Group;
osg::Node* n = new osg::Node;
g->addChild( n );
g->removeChild( n );
此番之后,n所指向的内存被释放掉,n指针非空,但是成了野指针,n不可再使用(接着使用就崩溃了)。

我今天遇到的情况是:n是一个被其他组节点删除的节点,通过调试它的父节点个数为0,为什么它没有被释放掉?

注:程序中没有使用智能指针

头大,求帮助

该用户从未签到

发表于 2012-11-29 08:26:57 | 显示全部楼层
既然都可以调试 知道它的父节点为0,那么肯定没有析构,不然怎么访问这段内存的数据

该用户从未签到

 楼主| 发表于 2012-11-29 08:46:44 | 显示全部楼层
liuzhiyu123 发表于 2012-11-29 08:26
既然都可以调试 知道它的父节点为0,那么肯定没有析构,不然怎么访问这段内存的数据

对,我奇怪的就是什么情况下才会出现这种现象?我认为一个节点n没有被其他节点引用的时候,特别是经过Group的removeChild函数之后,节点n应该被自动析构了啊。不知我哪里理解错了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表