Blame docs/faq/html/x892.html

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
>