I'm writing my own memory allocater. I'm getting a pointer to mapped memory from mmap. From there, I want to be able to get a pointer to a different part of that mapped memory (like x bytes away from the current pointer). How can I do this? Memory management is very confusing to me.
mmap
gives you a void*
and C doesn't allow pointer arithmetic with those, but you can cast it to char*
and then just add the number of bytes you want, e.g. mypointer + 16
.
If you cast the pointer to a larger type (like int*
), pointer arithmetic adds multiples of the size of that type. For example, if you add 16 to an int*
, you're adding enough bytes for 16 int
values (so 64 bytes, assuming sizeof(int)
is 4).