A simple Dynamic Memory Allocator that implements malloc() calloc() realloc()
and free() as multi-pool allocators. Meaning they reuse blocks of memory previously
requested in a system call (sbrk()). They will only request more memory from the
operating system when they have no more blocks of memory in their current "pool".
Unfortunately, there is no visualization to view how memory blocks are being
allocated and called from the operating system. However, as a future project I may try
to incorporate a visualization using javascript and some helpful plugins.