[vtkusers] Help with crashes in VTK

David Gobbi david.gobbi at gmail.com
Tue Sep 6 14:55:01 EDT 2011


On Tue, Sep 6, 2011 at 12:34 PM, Jonathan Morra <jonmorra at gmail.com> wrote:

> This could make sense, I'm going to try and change all my method signatures
> to pass around const references to vtkSmartPointers where appropriate.  Do
> you know what happens to the reference count upon returning a
> vtkSmartPointer?



In VTK, smart pointers should only be used to store references, not to pass
them.  VTK methods should take regular pointers as arguments.

The general rules are:

1) Refcounts are not automatically incremented when objects are returned,
i.e. when an object is returned to you, then you are just "borrowing" it.
 If you need to own it for a while, then store it in a smart pointer.

2) Refcounts are not automatically incremented when objects are passed to a
method.  If a method needs to own the object for a while, it should store it
in a smart pointer.  All methods in the VTK libraries that need to own the
objects that are passed to them will increment the refcount of those
objects, either by storing it in a smart pointer or by calling Register() on
it.

There are a few very rare exceptions to rule #1, such as the NewInstance()
method.

 - David
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20110906/b78184b6/attachment.htm>


More information about the vtkusers mailing list