in a computer system having a cpu coupled to a memory wherein the memory is logically divided into a number of logical units , each having a number of memory words , a free memory block header list having a number of free memory block headers , one for each free memory block of a memory pool having a number of the memory words , is provided for tracking free memory blocks in the memory pool . the free memory block headers are organized as a cartesian binary tree . the free memory block header list is used and maintained to control dynamic allocation and deallocation of free and allocated memory blocks of the memory pool . the memory pool is designed to have a memory pool size in multiples of the memory &# 39 ; s logical units . all memory requests are rounded to multiples of the memory &# 39 ; s word size . as a result , free and allocated memory blocks of the memory pool may be dynamically allocated and deallocated independent of how the memory is addressed , in particular , whether the memory is virtually or statically addressed .