计算机只有32位内存地址,但安装了16GB内存并正常工作?

我刚开始学习 C++,很惊讶地发现在调用 &varname 时,我得到了一个 8 位十六进制数字。假设这个数学是正确的:

2^(8 hexits x 4 bits hexit^-1) x 1 字节地址^-1 = 4.29497e+09 字节可寻址 RAM

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

回答

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

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

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

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

但是有一种可能性 4:无论您使用什么方法来输出指针,都会删除前导零。这是不自然的,但有可能这样写。


以上是计算机只有32位内存地址,但安装了16GB内存并正常工作?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>