[PyKDE] Bad Memory Leak

Giovanni Bajo rasky at develer.com
Wed Dec 6 11:03:26 GMT 2006

Andreas Pakulat wrote:

> Note this is python, not C++, del foobar doesn't immediately free the
> memory associated.

That's incorrect. "del foobar" removes a reference; if it's the last
reference and there are no loops, the memory is immediately collected. Now,
there are no reference loops at the Python level, so the memory *is*
collected when the "del" statement is executed.

Specifically, the first "del b" collected the Python-side instance of the
push button (the C++-side of the pushbutton is owned by the dialog as it's a
chiled). The second "del d" collects the Python-side instance of the dialog,
which in turns causes a deletion of the C++-side of the dialog (since it has
no parent, so it's fully owned by Python); the C++ destructor also destroys
the C++-side of the pushbutton. So, after the second "del", all the memory
is reclaimed, with no need for the Python cyclic GC to kick in.
Giovanni Bajo
Develer S.r.l.

More information about the PyQt mailing list