A method for managing the allocation of memory to one or more
applications. The method includes allocating a variety of fixed size
memory blocks to a requesting application, each of the fixed size memory
blocks being free of header information to maximize memory usage. Free,
or unused blocks of data of the same fixed size are maintained in a
freelist having a number of block roots corresponding to the number of
differently fixed size memory blocks. Each block root stores a root
pointer to an unused memory block previously allocated to the
application. To conserve memory, each unused memory block will store
branch pointers to other identically sized unused memory blocks, thereby
forming a sequential chain of unused memory blocks with the block root.
Therefore, applications requesting the same sized memory block can re-use
previously allocated fixed size memory blocks.