Notes:Fake stack

From Maths
Jump to: navigation, search

Grab some memory with:

char* data = malloc(2*1024*1024*1024); //2gb

When you're asked for data do something like this:

void* allocOnStack(uint64 size) {
    void* result = (void*) data;
    data += size;
    uint64* sizeNote = (uint64*) data;
    *sizeNote = size;
    data += sizeof(uint64);
    return result;
}

and for de-allocating

void stackFree(void* ptr) {
    uint64 size = *(((uint64*)data)-1)
    if((void*) (data-size-sizeof(uint64)) == ptr) { //okay
        data = data-size-sizeof(uint64); //or just data=ptr;
    } else {
        //exit with critical memory error!
    }
}