Il 23/11/2012 18:02, Andreas Färber ha scritto: >> Store in the object the freeing function that will be used at deletion >> > time. This makes it possible to use object_delete on statically-allocated >> > (embedded) objects. Dually, it makes it possible to use object_unparent >> > and object_unref without leaking memory, when the lifetime of object >> > might extend until after the call to object_delete. >> > >> > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > The code is > > Reviewed-by: Andreas Färber <afaer...@suse.de> > > however I do not agree with the goal in the subject. I thought this was > to match C++ in actually deallocating the memory.
At the "real" end of the series object_delete disappears completely. I posted only the initial part because the rest is not appropriate for 1.3, you can see it at https://github.com/bonzini/qemu/commits/qdev-free. You just have ref/unref to keep an object alive, and unparent to remove it. qbus_free and qdev_free become simply synonyms for object_unparent. After the unparent, the refcount is magically zero for the bus/device and everything below it in the qtree, and they disappear. Paolo