[vtkusers] Delete problems
domi at vision.ee.ethz.ch
Fri Jul 14 16:05:21 EDT 2006
OK, but I still need New() don't I?
Sounds like a dream. Any drawbacks?
Mathieu Malaterre wrote:
> Another approach (if you are using VTK 5) is the use of
> vtkSmartPointer. You don't need to call Delete, it is done for you.
> David Cole wrote:
>> Any "New" calls should have corresponding "Delete" calls. Any
>> "Register" calls should have corresponding "UnRegister" calls. And any
>> reference loops need to be broken by setting one of the pointer
>> variables involved to NULL or 0.
>> Order is largely irrelevant except in the reference loop case.
>> Sometimes it's important to know which part of a reference loop needs
>> to go away first. Perhaps you need to force a bunch of objects to go
>> away before a window is destroyed (for example).
>> That's the beauty of reference counted systems: order doesn't matter
>> as much as balance does...
>> If you can't figure out where there's a missing Delete or UnRegister
>> call, look for loops in pointer members (does your pipeline have a
>> feedback loop??) It sometimes helps to draw a diagram of the pipeline.
>> Or you could try simplifying it bit by bit and see when the leak goes
>> away... Then start adding things back in until the leak comes back.
>> That should point out where to look in the code...
>> Hope this helps,
>> Dominik Szczerba wrote:
>>> I have a quite complex pipeline with a few actors and filters. When I
>>> clean up at the end I always get a non-zero reference count somewhere
>>> (using C++). How do I robustly know in which order I should Delete my
>>> PS. this is particularly annoying in combination matlab-vtk, as
>>> matlab dies on any of such errors.
>>> This is the private VTK discussion list. Please keep messages
>>> on-topic. Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>>> Follow this link to subscribe/unsubscribe:
>> This is the private VTK discussion list. Please keep messages
>> on-topic. Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>> Follow this link to subscribe/unsubscribe:
Dominik Szczerba, Ph.D.
Computer Vision Lab CH-8092 Zurich
More information about the vtkusers