【发布时间】:2021-04-15 09:45:47
【问题描述】:
我刚开始学习 C++,很惊讶地发现,在调用 &varname 时,我得到了一个 8 位十六进制数字长的数字。 假设这个数学是正确的:
2^(8 hexits x 4 bits hexit^-1) x 1 字节地址^-1 = 4.29497e+09 字节 RAM 可寻址
我应该只能处理 4GB 的内存,但我的电脑有 16GB,所有这些都可以工作。这是否意味着我的计算机实际上每个内存地址有 32 位存储空间?
【问题讨论】:
-
你的程序运行在 32 位模式,你的操作系统运行在 64 位模式。
-
这与 c++ 有什么关系?
-
32 位可执行文件只能访问 4GB,但如果操作系统是 64 位,则多个进程可以每个使用 4GB。 64 位程序可以访问超过 4GB,但只能在 64 位操作系统上运行。这就是为什么很多软件都有 32 位和 64 位版本的原因。
-
when calling &varname, I got a 8 hex-digit-long number你到底打什么电话?请张贴代码。请注意,1的位数与0x0000000001一样多。 -
如果幸运的话,您可以使用 32 位获得 4 GB。我能想到的一个主要操作系统将您限制在 2 GB,可能是因为所有傻瓜都使用
ints 作为指针,反之亦然。