This feels like a silly question, but I just can’t work out a clean solution and can’t find a similar question in the mass of other pointer related questions.
I have some dynamically allocated memory of unknown type and want to store a pointer inside it at the start. Dynamic memory returned by malloc should be suitably aligned so I don’t think I have to worry about alignment when writing to the start of the allocated block.
This is my code, which works, but I’m representing a pointer as a 64-bit integer and want to do it in a more clean/portable way:
void *my_area = malloc(512);
void *my_pointer = get_my_pointer();
((long long *) my_area)[0] = (long long) my_pointer;
The cast to
long longis just extra baggage. Cast tovoid *instead.(I assume that this is for some kind of freelist or the like, i.e., you don’t need to use the structure at the same time.)