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

Reply via email to