|
请教大家一个问题,是这样的,我在官方的osgviewerMFC的基础上改动那个框架,运行结束退出后提示有N多的内存泄露问题,后来去直接运行官方例子,竟然也存在如此多的内存泄露~~晕了。。。
我仔细查了代码的部分,觉得很有可能是智能指针的使用出了问题,因为在编码时很少注意智能指针的使用规范,导致其计数不准确,也就是说退出时候,其实它的计数并没有到0,因此,内存有大量的泄露。
于是,我在析构函数里面写了如下语句:
node.release();//这样它的计数就应该到0了.
问题来了:
(1)我在王锐的书中第48页中看到说“被输出的参照对象引用计数归0,但是不释放”,也就是说内存还是没有释放。因此我将代码改成:delete node.release();但这时候又报错了,我查了下,原因在于node的析构函数是保护类型的,并不能访问,于是我悲催了~~~
(2)我现在想要的就是,有没有一种方法可以在智能指针未能及时释放掉内存时候,能够强制删除其参照对象,以便释放掉内存?另一方面,遇到析构函数为protected类型的时候,该怎么调用呢?
谢谢大侠们指点~~ |
|