Re: [gtk-list] Re: Freeing data connected to a widget via signals...
- From: Thomas Mailund <mailund mail1 stofanet dk>
 
- To: gtk-list redhat com
 
- Subject: Re: [gtk-list] Re: Freeing data connected to a widget via signals...
 
- Date: 30 Mar 2000 08:28:26 +0200
 
>>>>> "M" == Matthew D Allen <s2mdalle@titan.vcu.edu> writes:
 M> Now pretty much the only other memory issue I have with GTK+ is
 M> how and when it chooses to allocate new memory for the purpose of
 M> returning a value.  I.e. if you do gtk_editable_get_chars() it
 M> returns dynamically allocated memory, which you have to g_free()
 M> after you use, but with some other widgets, you really shouldn't
 M> free the result of functions that return the widget's "contents"
 M> because instead of newly allocated memory, it's just returning one
 M> of the widgets fields.  I tend to think of it conceptually, as in,
 M> "this function returns malloc'd memory when you ask for the
 M> contents of the widget, and here's a similar function (different
 M> widget) that doesn't return malloc'd memory (or at least not
 M> memory you should free)".  Conceptually, they're both functions
 M> that "return something that's 'in' the widget".
Yup, I second that this should really be documented somewhere, but as
a general rule I asways free everything that isn't declared 'const'
(and which isn't a GtkWidget*).  I don't know how great a rule this
is, but it hasn't caused be any grief so far.  As for GtkWidget* I
ref them if I'll save them somewhere else, otherwise I don't care
about them.
 M> Any chance of those types of things ending up in the RDP?
 M> (generally, when I free the return value of a GTK+ call when I'm
 M> done with it, I only did it because I checked out the gtk+ source
 M> and saw that it was g_strdup'ing a value on return.  Something
 M> like return(g_strdup(widget->field));
well, when in doubt consult the source.  If you discover something
which you think should be documented, document it ;)  It is really the
only way it will get documented.
        /mailund
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]