Hi,
I'm making an allocator with different allocation strategies. One of these strategies is a stack allocation.
I want to preallocate a large block of memory and pick from this space when allocating memory. The picking would be sequential so it would resemble to a stack.
In theory it seems fine. But how can I return chunks of such a memory block?
Suppose a quick draft (see comment in allocate):
So, any idea how I could return the address in myMemory that happens to be at the given index?Code:init()
{
myMemory = ::operator new(LOTS);
}
void* allocate(int size)
{
// what i'm trying is this
// problem is, compiler doesn't know the size of void*
// i'm sure there's a way to do this, but i don't know any
void* result = myMemory + index;
index += size;
return result;
}
void* myMemory;
int index;
Any way to do this without templating (allocator relies on an abstract strategy that can be stack, heap, etc)?
Thanks!