该用户从未签到
使用道具 举报
上面三个例子中的main函数下,node变量new空间的必要性
函数返回值写哪一种比较好?是返回指针,还是直接返回智能指针?
然后转到另一个地方。 osg::ref_ptr<osg::Node> node = new osg::Node; node.get(); node.release(); 对于上面的代码,在执行了node.get()后,node没有其他的改变,只是将内部的指针提取出来。node还是可以继续使用的。但是node.release()执行完后,node这个变量不能继续使用。但是堆上的内存仍在,node的数据仍然可以继续使用。 以上的理解不知道是否正确?
但要谨记的一点是如果返回指针且在函数内部使用的ref_ptr引用他,这是必须调用.release(),否则当你使用返回值时返回的指针已经是野指针,其内容已被释放再使用时导致崩溃。
osg::ref_ptr<osg::Node> create() { osg::ref_ptr<osg::Node> node = new osg::Node; return node.get(); } 这种写法也没什么问题吧?我很多程序是这么写的。
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。
|小黑屋|手机版|Archiver|OSG中国官方论坛 ( 陕ICP备14000835号-1 )
GMT+8, 2024-11-27 22:44