[Interest] Double destruction of Qt objects in Qt example code?

Nikos Chantziaras realnc at gmail.com
Sat Aug 18 20:29:53 CEST 2012

On 18/08/12 20:46, K. Frank wrote:
> [...]
> This does raise one c++ / Qt question for me:  When an automatic
> variable goes out of scope, its destructor is called (and, at some
> point, the stack is popped, but not by the destructor nor by any
> explicit user code).  When a heap variable is deleted, its destructor
> is called, and the equivalent of free is called.  The point is delete
> is not called (in correct code) on automatic variables.
> How can the Qt parent-child system work with both automatic and
> heap variables as children?  When a child object registers itself
> with its parent (e.g., by being passed a pointer to its parent in its
> constructor), neither the child object nor the parent knows whether
> the child is an automatic or heap variable (and, using portable
> standard c++, can't know).  So how can the parent know (when the
> parent is destroyed) whether to call the child's destructor directly or
> to call delete on the child?

Qt doesn't detect this.  Your application will crash.  So don't do it :-)

On a similar note, don't delete QObject instances manually.  Call their 
deleteLater() member function instead.

More information about the Interest mailing list