Save pointer's memory address

c, malloc, pointers, unix

Solution

Storing the value of the pointer (i.e. the memory location of some variable) in a string can be done much like you've used printf:

char buf[128];
void *s = malloc (size);
sprintf(buf, "%p\n",s);

To 'save' the value into an integer (type) you can do a simple cast:

void *s = malloc (size);
size_t int_value = (size_t)s;

Since in c you never know what your machine address pointer length is, this (technically) isn't guaranteed to work quite right; both of these methods can go wrong with wacky architectures or compilers.

Problem

I have to implement a function that returns the memory address of a pointer when I allocate it with `malloc()`. I know that `malloc(value)` allocates an area on the heap which is of size `value`. I know how to implement the code for printing the memory address of that pointer: ``` void *s = malloc (size) printf("%p\n",s); ``` My question is, how can I save the value printed by that code in an `int` or string (e.g. `char *`)?

Original source