Ulrich Hertlein schrieb:
On 15/12/08 6:45 PM, Andreas Goebel wrote:
TheGeometry->addPrimitiveSet(new
osg::DrawArrays(osg::PrimitiveSet::POLYGON,0,numCoords));
...
I ask myself if this will give a memory-leak, or if this is ok, as the
pointer is directly passed to the TheGeometry-object (which lives in a
ref_ptr).

Exactly. Because it's passed to a ref_ptr it won't leak. You could also assign it to a local non-ref_ptr and it still would be OK.

The more likely error case is stale objects (holding a non-smart pointer to a deleted object), not memory leaks because the object is held (and eventually deleted) in a ref_ptr inside OSG.

Cheers,
/ulrich
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Thanks.

As the topic is related: Do you know where I have to set a breakpoint to see if an object like a node really gets deleted?

I want to free some memory. Therefore I remove the node (and some other stuff) from the scene-graph like this:

if (TheNode.get() ){
       osg::Node::ParentList parents = TheNode->getParents();
       for(osg::Node::ParentList::iterator pitr=parents.begin();
           pitr!=parents.end();
           ++pitr)
       {
           (*pitr)->removeChild(TheNode.get());
       }
   }

And then remove the reference like this:

TheNode= NULL;

So if I really got all references removed, it should delete the node, right?

I have the impression that the node doesn´t get deleted (I created some hundred nodes for testing and removed them this way, memory-consumption didn´t go down), so either my approach is wrong, or I forgot some reference somewhere.

Regards,

Andreas

_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to