|
程序中如果有全局变量为智能指针的形式,指向某地址,那么除了程序结束,没有其他方法释放该指针的空间了吗?
比如:
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");
...
}
我想场景写入文件后,立即释放场景所占用的内存,可由于全局变量的存在,智能指针无法自动释放,有什么办法可以释放这部分内存吗? |
|