- 
Memory Slices — efficient way to allocate groups of equal-sized chunks of memory
- 
Memory Chunks — deprecated way to allocate groups of equal-sized chunks of memory
- 
Doubly-Linked Lists — linked lists containing integer values or pointers to data, with the ability
to iterate over the list in both directions
- 
Singly-Linked Lists — linked lists containing integer values or pointers to data, limited to
iterating over the list in one direction
- 
Double-ended Queues — double-ended queue data structure
- 
Sequences — scalable lists
- 
Trash Stacks — maintain a stack of unused allocated memory chunks
- 
Hash Tables — associations between keys and values so that given a key the value
can be found quickly
- 
Strings — text buffers which grow automatically as text is added
- 
String Chunks — efficient storage of groups of strings
- 
Arrays — arrays of arbitrary elements which grow automatically as elements are added
- 
Pointer Arrays — arrays of pointers to any type of data, which grow automatically as new
elements are added
- 
Byte Arrays — arrays of bytes, which grow automatically as elements are added
- 
Balanced Binary Trees — a sorted collection of key/value pairs optimized for searching
and traversing in order
- 
N-ary Trees — trees of data with any number of branches
- 
Quarks — a 2-way association between a string and a unique integer identifier
- 
Keyed Data Lists — lists of data elements which are accessible by a string or GQuark identifier
- 
Datasets — associate groups of data elements with particular memory locations
- 
Relations and Tuples — tables of data which can be indexed on any number of fields
- 
Caches — caches allow sharing of complex data structures to save resources
- 
Memory Allocators — deprecated way to allocate chunks of memory for GList, GSList and GNode