计算机只有32位内存地址,但安装了16GB的ram并可以工作吗



我刚开始学习C++,当调用&varname,我得到一个8个十六进制数字的长数字。假设这个数学是正确的:

2^(8个十六进制x 4位十六进制^-1(x 1字节地址^-1=4.29497e+09字节RAM可寻址

我应该只能寻址4GB的内存,但我的电脑有16GB,所有这些都可以工作。这是否意味着我的计算机每个内存地址实际上有32位存储空间?

可能性1:您的程序是为32位编译的,而您的操作系统是64位的。

可能性2:你的程序是为32位编译的,你的操作系统是32位的,支持AWE,实际上可以映射所有16GB,只是不是所有进程。编辑:现在知道操作系统是Windows,唯一能做到这一点的Windows版本是WindowsServer2003x86数据中心版。

可能性3:你的程序是为32位编译的,你的操作系统是32位的,并且只使用底部的4GB。

共同点是您的程序是为32位编译的。

然而,有一种可能性4:无论你用什么方法来输出掉了前导零的指针。这是不自然的,但有可能是这样写的。

相关内容

最新更新