Save pointer's memory address Save pointer's memory address unix unix

Save pointer's memory address


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.


char buf[32] = {0}snprintf(buf, sizeof buf, "%p\n", s);

then you can print it:

printf("%s\n", buf);


You've already saved the value as a bit pattern in s, so I assume you mean that you simply want the text output by printf as a string. The call you want is sprintf:

char text[255];sprintf(text, "%p\n", s);