基本上我想将指针的地址存储在缓冲区中.不要问我为什么
char * buff = "myBuff";
char * myData = (char*)malloc(sizeof(char*));
int addressOfArgTwo = (unsigned int)buff;
memcpy(myData, &addressOfArgTwo, sizeof(char*));
cout << "Int Val: " << addressOfArgTwo << endl;
cout << "Address in buffer:" << (unsigned int)*myData << endl;
Run Code Online (Sandbox Code Playgroud)
我不明白为什么上面的代码不起作用.它输出:
Int Val: 4472832
Address in buffer:0
Run Code Online (Sandbox Code Playgroud)
当缓冲区中的Int Val和Address应该相同时.谢谢
你取消引用一个char*,产生一个char,然后将这个1字节的字符串转换为int,而不是整个4字节的地址(如果这是一个32位的机器,64位的8个字节).4472832是十六进制的444000.在小端机器上,你抓住最后一个00.
*((unsigned int*)myData)
Run Code Online (Sandbox Code Playgroud)
应该导致显示正确的数字.