查看: 1723|回复: 2

关于智能指针释放内存的问题

[复制链接]

该用户从未签到

发表于 2009-11-18 16:31:52 | 显示全部楼层 |阅读模式
程序中如果有全局变量为智能指针的形式,指向某地址,那么除了程序结束,没有其他方法释放该指针的空间了吗?

比如:
std::vector< osg::ref_ptr<osg::Geode> > g_equipmentVec;//全局变量

void readEquipment(ifstream& fin)
{
   ...
   ...
   for (i=0; i<numOfEquipments; i++)
    {
         ...
         osg::ref_ptr<osg::Geode> equipGeode = new osg::Geode();
         ...
         ...
        g_equipmentVec.push_back(equipGeode);
    }
   ...
}

void  genpaged()
{
   ...
   osg::ref_ptr<osg::Group > root = new osg::Group() ;
   for(int i=0; i<g_equipmentVec(); ++i)  //举例来说
  {
    root->addchild(g_equipmentVec(i));
  }
  osgDB::writeNodeFile(*root,"test.osg");
  ...

}

我想场景写入文件后,立即释放场景所占用的内存,可由于全局变量的存在,智能指针无法自动释放,有什么办法可以释放这部分内存吗?

该用户从未签到

发表于 2009-11-18 20:50:54 | 显示全部楼层
您可以设置g_equipmentVec.clear(),清空所有的内容;这样场景数据的引用会被解除

该用户从未签到

 楼主| 发表于 2009-11-19 15:30:40 | 显示全部楼层
2# array

谢谢array
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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