<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >Memory Management</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="GTK+ 2.0 Tutorial" HREF="book1.html"><LINK REL="UP" TITLE="GLib" HREF="c2023.html"><LINK REL="PREVIOUS" TITLE="Singly Linked Lists" HREF="x2055.html"><LINK REL="NEXT" TITLE="Timers" HREF="x2076.html"></HEAD ><BODY CLASS="SECT1" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >GTK+ 2.0 Tutorial</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="x2055.html" ACCESSKEY="P" ><<< Previous</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >GLib</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="x2076.html" ACCESSKEY="N" >Next >>></A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="SECT1" ><H1 CLASS="SECT1" ><A NAME="SEC-MEMORYMANAGEMENT" >Memory Management</A ></H1 ><TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >gpointer g_malloc( gulong size );</PRE ></TD ></TR ></TABLE ><P >This is a replacement for malloc(). You do not need to check the return value as it is done for you in this function. If the memory allocation fails for whatever reasons, your applications will be terminated.</P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >gpointer g_malloc0( gulong size );</PRE ></TD ></TR ></TABLE ><P >Same as above, but zeroes the memory before returning a pointer to it.</P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >gpointer g_realloc( gpointer mem, gulong size );</PRE ></TD ></TR ></TABLE ><P >Relocates "size" bytes of memory starting at "mem". Obviously, the memory should have been previously allocated.</P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >void g_free( gpointer mem );</PRE ></TD ></TR ></TABLE ><P >Frees memory. Easy one. If <TT CLASS="LITERAL" >mem</TT > is NULL it simply returns.</P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >void g_mem_profile( void );</PRE ></TD ></TR ></TABLE ><P >Dumps a profile of used memory, but requires that you add <TT CLASS="LITERAL" >#define MEM_PROFILE</TT > to the top of glib/gmem.c and re-make and make install.</P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >void g_mem_check( gpointer mem );</PRE ></TD ></TR ></TABLE ><P >Checks that a memory location is valid. Requires you add <TT CLASS="LITERAL" >#define MEM_CHECK</TT > to the top of gmem.c and re-make and make install.</P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="x2055.html" ACCESSKEY="P" ><<< Previous</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="book1.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="x2076.html" ACCESSKEY="N" >Next >>></A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Singly Linked Lists</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="c2023.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Timers</TD ></TR ></TABLE ></DIV ></BODY ></HTML >