|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>Memory does not seem to be released when I free the
|
|
Packit Service |
fb6fa5 |
list nodes I've allocated
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
NAME="GENERATOR"
|
|
Packit Service |
fb6fa5 |
CONTENT="Modular DocBook HTML Stylesheet Version 1.79">
|
|
Packit Service |
fb6fa5 |
REL="HOME"
|
|
Packit Service |
fb6fa5 |
TITLE="GTK+ FAQ"
|
|
Packit Service |
fb6fa5 |
HREF="book1.html">
|
|
Packit Service |
fb6fa5 |
REL="UP"
|
|
Packit Service |
fb6fa5 |
TITLE="About GLib"
|
|
Packit Service |
fb6fa5 |
HREF="c866.html">
|
|
Packit Service |
fb6fa5 |
REL="PREVIOUS"
|
|
Packit Service |
fb6fa5 |
TITLE="How can I use the doubly linked lists?"
|
|
Packit Service |
fb6fa5 |
HREF="x885.html">
|
|
Packit Service |
fb6fa5 |
REL="NEXT"
|
|
Packit Service |
fb6fa5 |
TITLE="Why use g_print, g_malloc, g_strdup and fellow glib
|
|
Packit Service |
fb6fa5 |
functions?"
|
|
Packit Service |
fb6fa5 |
HREF="x899.html">
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="SECT1"
|
|
Packit Service |
fb6fa5 |
BGCOLOR="#FFFFFF"
|
|
Packit Service |
fb6fa5 |
TEXT="#000000"
|
|
Packit Service |
fb6fa5 |
LINK="#0000FF"
|
|
Packit Service |
fb6fa5 |
VLINK="#840084"
|
|
Packit Service |
fb6fa5 |
ALINK="#0000FF"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="NAVHEADER"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
SUMMARY="Header navigation table"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%"
|
|
Packit Service |
fb6fa5 |
BORDER="0"
|
|
Packit Service |
fb6fa5 |
CELLPADDING="0"
|
|
Packit Service |
fb6fa5 |
CELLSPACING="0"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
COLSPAN="3"
|
|
Packit Service |
fb6fa5 |
ALIGN="center"
|
|
Packit Service |
fb6fa5 |
>GTK+ FAQ
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="10%"
|
|
Packit Service |
fb6fa5 |
ALIGN="left"
|
|
Packit Service |
fb6fa5 |
VALIGN="bottom"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
HREF="x885.html"
|
|
Packit Service |
fb6fa5 |
ACCESSKEY="P"
|
|
Packit Service |
fb6fa5 |
><<< Previous
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="80%"
|
|
Packit Service |
fb6fa5 |
ALIGN="center"
|
|
Packit Service |
fb6fa5 |
VALIGN="bottom"
|
|
Packit Service |
fb6fa5 |
>About GLib
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="10%"
|
|
Packit Service |
fb6fa5 |
ALIGN="right"
|
|
Packit Service |
fb6fa5 |
VALIGN="bottom"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
HREF="x899.html"
|
|
Packit Service |
fb6fa5 |
ACCESSKEY="N"
|
|
Packit Service |
fb6fa5 |
>Next >>>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
ALIGN="LEFT"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%">
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="SECT1"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="SECT1"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
NAME="AEN892"
|
|
Packit Service |
fb6fa5 |
>Memory does not seem to be released when I free the
|
|
Packit Service |
fb6fa5 |
list nodes I've allocated
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>GLib tries to be "intelligent" on this special issue: it
|
|
Packit Service |
fb6fa5 |
assumes that you are likely to reuse the objects, so caches
|
|
Packit Service |
fb6fa5 |
the allocated memory. If you do not want to use this behavior,
|
|
Packit Service |
fb6fa5 |
you'll probably want to set up a special allocator.
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>To quote Tim Janik:
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="QUOTE"
|
|
Packit Service |
fb6fa5 |
>"If you have a certain portion of code that uses *lots*
|
|
Packit Service |
fb6fa5 |
of GLists or GNodes, and you know you'd better want to release
|
|
Packit Service |
fb6fa5 |
all of them after a short while, you'd want to use a
|
|
Packit Service |
fb6fa5 |
GAllocator. Pushing an allocator into g_list will make all
|
|
Packit Service |
fb6fa5 |
subsequent glist operations private to that allocator's memory
|
|
Packit Service |
fb6fa5 |
pool (and thus you have to take care to pop the allocator
|
|
Packit Service |
fb6fa5 |
again, before making any external calls): "
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
BORDER="0"
|
|
Packit Service |
fb6fa5 |
BGCOLOR="#E0E0E0"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="PROGRAMLISTING"
|
|
Packit Service |
fb6fa5 |
>GAllocator *allocator;
|
|
Packit Service |
fb6fa5 |
GList *list = NULL;
|
|
Packit Service |
fb6fa5 |
guint i;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* set a new allocation pool for GList nodes */
|
|
Packit Service |
fb6fa5 |
allocator = g_allocator_new ("list heap", 1024);
|
|
Packit Service |
fb6fa5 |
g_list_push_allocator (allocator);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* do some list operations */
|
|
Packit Service |
fb6fa5 |
for (i = 0; i < 4096; i++)
|
|
Packit Service |
fb6fa5 |
list = g_list_prepend (list, NULL);
|
|
Packit Service |
fb6fa5 |
list = g_list_reverse (list);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* beware to pop allocator befor calling external functions */
|
|
Packit Service |
fb6fa5 |
g_list_pop_allocator ();
|
|
Packit Service |
fb6fa5 |
gtk_label_set_text (GTK_LABEL (some_label), "some text");
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* and set our private glist pool again */
|
|
Packit Service |
fb6fa5 |
g_list_push_allocator (allocator);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* do some list operations */
|
|
Packit Service |
fb6fa5 |
g_list_free (list);
|
|
Packit Service |
fb6fa5 |
list = NULL;
|
|
Packit Service |
fb6fa5 |
for (i = 0; i < 4096; i++)
|
|
Packit Service |
fb6fa5 |
list = g_list_prepend (list, NULL);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* and back out (while freeing all of the list nodes in our pool) */
|
|
Packit Service |
fb6fa5 |
g_list_pop_allocator ();
|
|
Packit Service |
fb6fa5 |
g_allocator_free (allocator);
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
CLASS="NAVFOOTER"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
ALIGN="LEFT"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%">
|
|
Packit Service |
fb6fa5 |
SUMMARY="Footer navigation table"
|
|
Packit Service |
fb6fa5 |
WIDTH="100%"
|
|
Packit Service |
fb6fa5 |
BORDER="0"
|
|
Packit Service |
fb6fa5 |
CELLPADDING="0"
|
|
Packit Service |
fb6fa5 |
CELLSPACING="0"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="33%"
|
|
Packit Service |
fb6fa5 |
ALIGN="left"
|
|
Packit Service |
fb6fa5 |
VALIGN="top"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
HREF="x885.html"
|
|
Packit Service |
fb6fa5 |
ACCESSKEY="P"
|
|
Packit Service |
fb6fa5 |
><<< Previous
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="34%"
|
|
Packit Service |
fb6fa5 |
ALIGN="center"
|
|
Packit Service |
fb6fa5 |
VALIGN="top"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
HREF="book1.html"
|
|
Packit Service |
fb6fa5 |
ACCESSKEY="H"
|
|
Packit Service |
fb6fa5 |
>Home
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="33%"
|
|
Packit Service |
fb6fa5 |
ALIGN="right"
|
|
Packit Service |
fb6fa5 |
VALIGN="top"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
HREF="x899.html"
|
|
Packit Service |
fb6fa5 |
ACCESSKEY="N"
|
|
Packit Service |
fb6fa5 |
>Next >>>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="33%"
|
|
Packit Service |
fb6fa5 |
ALIGN="left"
|
|
Packit Service |
fb6fa5 |
VALIGN="top"
|
|
Packit Service |
fb6fa5 |
>How can I use the doubly linked lists?
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="34%"
|
|
Packit Service |
fb6fa5 |
ALIGN="center"
|
|
Packit Service |
fb6fa5 |
VALIGN="top"
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
HREF="c866.html"
|
|
Packit Service |
fb6fa5 |
ACCESSKEY="U"
|
|
Packit Service |
fb6fa5 |
>Up
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
WIDTH="33%"
|
|
Packit Service |
fb6fa5 |
ALIGN="right"
|
|
Packit Service |
fb6fa5 |
VALIGN="top"
|
|
Packit Service |
fb6fa5 |
>Why use g_print, g_malloc, g_strdup and fellow glib
|
|
Packit Service |
fb6fa5 |
functions?
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|
|
Packit Service |
fb6fa5 |
>
|