64位地址

Yak*_*kov 0 c c++ 64-bit memory-address visual-studio

我编译了64位Windows操作系统的应用程序.应用程序应保存64位地址,我必须决定变量类型,以保存它们.我想长期保存它们.但是sizeof(long) == 4.我在哪里以及如何保存地址

小智 10

您应该将内存地址存储在指针中:

void *myaddr = 0x0123456789ABCDEF; // memory address
int *myaddr2 = 0x0123456789ABCDEF; // pointer to int in memory, dereferencable
Run Code Online (Sandbox Code Playgroud)

您可以像这样获取变量的地址:

int myvar;
int *addrofmyvar = &myvar;
printf("%p", addrofmyvar); // use %p to print pointers
Run Code Online (Sandbox Code Playgroud)

注意:C和C++之间在指针(特别是void指针)方面存在一些差异.请参阅C和C++标准.没有"C/C++"这样的东西.


Bla*_*iev 7

如果您打算将指针存储为数字,请使用uintptr_tintptr_t.它们保证匹配指针的大小和表示.

否则你不会编写可移植代码.