Я хочу отправить / получить адрес памяти через сокет в C.
Что у меня есть следующее:
void *ptr = malloc(122); /* So the pointer points to some valid address */
unsigned char *socketData = NULL;
socketData = (unsigned char*)malloc(sizeof(void*));
memset(socketData, 0, sizeof(void*));
/* ??? How to get the memory address - where ptr points to - to socketData ??? */
Я знаю, что способ печати адресов указателей с использованием printf
заключается в использовании %p
, т.е.
printf("%p", ptr);
Но это печатает, например, 0x0021ef1a.
То, что я хочу, это просто следующее: 0021ef1a
А на стороне получателя: как преобразовать полученные байты обратно в void*
?
Ах: и код должен работать как для 32-битных систем, так и для 64-битных систем;)
Кроме того, код должен компилироваться с использованием -Wall -Werror .... huh
Спасибо за помощь!
Хороших выходных,
Джонас