User-level Memory Manager

The goal of this exercise is to design and implement an user-level memory management library similar to LIBC's malloc. Memory is allocated, released and reallocated by this library.

At initialization, the library must allocate a specific amount of memory from the operating system (e.g. brk, which is thereafter used as a buffer to meet user requests for memory. This buffer must be managed so that free neighbors blocks are merged together, this reducing external fragmentation.

API

The user-level memory manager library must implement, at least, the following interface: