<!-- ##### SECTION Title ##### --> Trash Stacks <!-- ##### SECTION Short_Description ##### --> maintain a stack of unused allocated memory chunks. <!-- ##### SECTION Long_Description ##### --> <para> A #GTrashStack is an efficient way to keep a stack of unused allocated memory chunks. Each memory chunk is required to be large enough to hold a #gpointer. This allows the stack to be maintained without any space overhead, since the stack pointers can be stored inside the memory chunks. </para> <para> There is no function to create a #GTrashStack. A %NULL #GTrashStack* is a perfectly valid empty stack. </para> <!-- ##### SECTION See_Also ##### --> <para> </para> <!-- ##### STRUCT GTrashStack ##### --> <para> Each piece of memory that is pushed onto the stack is cast to a <structname>GTrashStack*</structname>. </para> @next: pointer to the previous element of the stack, gets stored in the first <literal>sizeof (gpointer)</literal> bytes of the element. <!-- ##### FUNCTION g_trash_stack_push ##### --> <para> Pushes a piece of memory onto a #GTrashStack. </para> @stack_p: a pointer to a #GTrashStack. @data_p: the piece of memory to push on the stack. <!-- ##### FUNCTION g_trash_stack_pop ##### --> <para> Pops a piece of memory off a #GTrashStack. </para> @stack_p: a pointer to a #GTrashStack. @Returns: the element at the top of the stack. <!-- ##### FUNCTION g_trash_stack_peek ##### --> <para> Returns the element at the top of a #GTrashStack. </para> @stack_p: a pointer to a #GTrashStack. @Returns: the element at the top of the stack. <!-- ##### FUNCTION g_trash_stack_height ##### --> <para> Returns the height of a #GTrashStack. </para> @stack_p: a pointer to a #GTrashStack. @Returns: the height of the stack.