我在64位系统上测试内容,在Visual Studio中,我在下面的代码中得到以下输出。
#include <iostream>
using namespace std;
int main()
{
int asdf = 32;
cout << &asdf;
}
00ACF88C
在GCC中使用-m32我得到0xfffc1828。这两个地址有什么区别? 0xff与00相同吗?这些是逻辑或物理地址吗?
答案 0 :(得分:1)
放置变量的地址完全取决于实现。除了那些地址,您的编译器和平台决定在您运行程序的特定时间用于存储该特定整数的地址,这些地址没有什么特别之处。
在具有虚拟内存的系统上,您可以访问的大部分地址(除非您正在编写内核的内存管理单元)将成为虚拟地址。