据我所知,指针的大小在32位系统上通常是4个字节,在64位系统上是8个字节。但据我所知,并非所有位都用于存储地址。如果是这样,将免费位用于其他目的是否安全?如果是,在 32 位和 64 位系统上,指针内存空间中有多少空闲位可用?
最佳答案
在撰写本文时,当前的 64 位 Intel 芯片在内部使用 48 位指针。
我遇到的每个 C++ 编译器都将这个 48 位指针抽象为一个 64 位指针,其中最高有效的 16 位设置为零。
但是使用任何空闲位的行为是未定义。
在 32 位芯片成为常态的末期,可能有 4GB 的物理内存,更不用说虚拟内存了。所有 32 位都用于指针。
关于c++ - 存储指针值需要多少位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51361924/