David Rosal <[EMAIL PROTECTED]> writes:

> Allin Cottrell wrote:
>
>> gchar *text = g_strdup_printf("banana %d", i);
>> gtk_entry_set_text(GTK_ENTRY(entry), text);
>> g_free(text);
>
> Is the above code really safe?
>
> You're passing the address of "text" to the function 
> gtk_entry_set_text(). Next you g_free() that address, so AFAIK the 
> memory manager marks it as free.
> Isn't it dangerous? I mean, after g_free() any call that requests for 
> memory (g_strdup, g_malloc, ...) can overwrite that memory chunk, 
> changing the text in the GtkEntry. Am I right?

No.  gtk_entry_set_text() will keep its own copy of the text
internally, which is contained within the GtkEntry object.  Once you
set the text, you can safely free your copy.  If it didn't work this
way, you would quickly run into all sorts of memory leaks.


Regards,
Roger

-- 
Roger Leigh
                Printing on GNU/Linux?  http://gimp-print.sourceforge.net/
                Debian GNU/Linux        http://www.debian.org/
                GPG Public Key: 0x25BFB848.  Please sign and encrypt your mail.
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to