64位地址

时间:2011-12-11 13:30:10

标签: c++ c visual-studio 64-bit memory-address

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

5 个答案:

答案 0 :(得分:10)

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

void *myaddr = 0x0123456789ABCDEF; // memory address
int *myaddr2 = 0x0123456789ABCDEF; // pointer to int in memory, dereferencable

您可以获取如下变量的地址:

int myvar;
int *addrofmyvar = &myvar;
printf("%p", addrofmyvar); // use %p to print pointers

注意:关于指针(特别是void指针),C和C ++之间存在一些差异。请参阅C和C ++标准。没有“C / C ++”这样的东西。

答案 1 :(得分:7)

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

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

答案 2 :(得分:4)

您应该使用实际指针(地址中的任何类型)来存储地址。

答案 3 :(得分:2)

我没有尝试过但可能需要长时间工作。

请检查此链接:http://msdn.microsoft.com/en-us/library/s3f49ktz%28v=vs.80%29.aspx

无符号长long,8个字节,相当于unsigned __int64

范围:从0到18,446,744,073,709,551,615

答案 4 :(得分:0)

编写跨平台代码时,请勿使用LONGLONG LONGLONG在不同平台/不同编译器上的大小不同。