Any suggestions for my stack based allocator? (Except for suggestions to use a class with private/public members)
struct Heap
{
void* heap_start;
voi
You've implemented a stack based allocator. You can't free up without leaving gaps. Usually a pool refers to a block of contiguous memory with fixed sized slots, which are doubly linked to allow constant time add and delete.
Here's one you can use as a guide. It's along the same lines as yours but includes basic iterators over allocated nodes, and uses templates to be type aware.