存储指针值需要多少位?

Joe*_*Joe 1 c++ memory pointers bits

据我所知,32位系统上指针的大小通常为4个字节,而在64位系统上则为8个字节.但据我所知,并非所有位都用于存储地址.如果是这样,将空闲位用于其他目的是否安全?如果是这样,在指针存储空间中32位和64位系统上有多少可用位和可用位数?

Bat*_*eba 8

在撰写本文时,当前的64位Intel芯片在内部使用48位指针.

我遇到的每个C++编译器都将这个48位指针抽象为64位指针,最高16位设置为零.

但是使用任何空闲位的行为都是未定义的.

接近32位芯片的末端是常态,有可能拥有4GB的物理内存,更不用说虚拟内存了.所有32位都用于指针.

  • @JoeJoe你需要全部32位来解决你可能拥有的ram的每个字节,它只有~4GB.48位可以获得256TB的可寻址内存. (4认同)