On 08/18/2011 09:54 PM, Peter Maydell wrote:
On 18 August 2011 18:48, Avi Kivity<a...@redhat.com>  wrote:
>  +static GMemVTable gmemvtable = {
>  +    .malloc = qemu_malloc,
>  +    .realloc = qemu_realloc,
>  +    .free = qemu_free,
>  +};
>  +
>  +/**
>  + * qemu_malloc_init: initialize memory management
>  + */
>  +void qemu_malloc_init(void)
>  +{
>  +    g_mem_set_vtable(&gmemvtable);
>  +}

Does this mean you can now safely allocate with g_malloc
and free with qemu_free, or is mixing the two APIs like that
still a no-no ?

You can, but I'd forbid it.  Mixing layers can only lead to tears later on.

Best would be to convert qemu_malloc()s to g_new()s and g_malloc()s to reduce confusion.


(I'm thinking about a situation where you might use a glib utility
function that returned g_malloc'd memory and want to pass that back
to your caller without having to either copy to qemu_malloc'd memory
or require your caller to care about the distinction.)


Changing ownership of memory is rare, I hope.

--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.


Reply via email to