[vtkusers] Delete problems
David Cole
david.cole at kitware.com
Fri Jul 14 12:08:46 EDT 2006
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,
David
Dominik Szczerba wrote:
> Hi,
>
> 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
> components?
>
> PS. this is particularly annoying in combination matlab-vtk, as matlab
> dies on any of such errors.
>
> regards,
> Dominik
> _______________________________________________
> 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:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
More information about the vtkusers
mailing list