[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