|
本帖最后由 huyaoyu 于 2010-11-5 10:14 编辑
我使用目前最新版的OSG,利用VS2008在Win7 64bit机器上调试。在自己的项目中自己创建了一个类A,并且这个类A直接继承OSG::Referenced类。之后又新建了类B继承类A。最后我把指向类B的指针作为一个OSG::Object的对象的userdata(使用setUserData方法),但是在调试的时候发现类B的析构函数并没有被调用过。是不是这表示类B的实例没有被释放啊?创建类B的实例是是利用了
osg::ref_ptr<B> ptr = new B;
的方式,在给osg::Object的一个指针对象建立userdata时使用了
prtObject->setUserData(B.get());
的格式。
我看OSG的Doc上有说serUserData方法的解释,是这样的
Set user data, data must be subclassed from Referenced to allow automatic memory handling. If your own data isn't directly subclassed from Referenced then create an adapter object which points to your own object and handles the memory addressing.
它说要directly subclassed,是不是就是指一定要直接继承osg::Referenced啊?如何确定类B的指针已经被释放了? |
|