[vtkusers] Help with crashes in VTK

Mark Roden mmroden at gmail.com
Tue Sep 6 15:01:56 EDT 2011


Hi David,

Just to chime in here for a moment, when should a user use
smartpointers?  All the VTK documentation has smart pointers, but from
this discussion, it seems that once I have objects that live for more
than a few function calls, I shouldn't be using smart pointers but
should instead just manage my own memory as I'm used to doing.

Thanks,
Mark

On Tue, Sep 6, 2011 at 11:55 AM, Jonathan Morra <jonmorra at gmail.com> wrote:
>
>
> ---------- Forwarded message ----------
> From: David Gobbi <david.gobbi at gmail.com>
> Date: Tue, Sep 6, 2011 at 11:55 AM
> Subject: Re: [vtkusers] Help with crashes in VTK
> To: Jonathan Morra <jonmorra at gmail.com>
> Cc: Xiaofeng Z <xf10036 at hotmail.com>, VTK <vtkusers at vtk.org>
>
>
> 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
>



More information about the vtkusers mailing list