存储指针值需要多少位

How many bits are required to store the pointer value?

本文关键字:多少 指针 存储      更新时间:2023-10-16

据我所知,指针在32位系统上的大小通常为4字节,在64位系统上为8字节。但据我所知,并不是所有的比特都用于存储地址。如果是,将空闲位用于其他目的是否安全?如果是,指针内存空间中的32位和64位系统如何以及有多少空闲位可用?

在编写当前64位Intel芯片时,内部使用48位指针。

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

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

在32位芯片成为常态的末期,可以拥有4GB的物理内存,更不用说虚拟内存了。所有32位都用于一个指针。

将指针值中的任何位用于不同目的都是不可移植的。

您可以查看平台的文档,看看它是否保证指针值中的任何特定位都可以使用。很可能即使它们没有直接参与寻址,它们也被保留供平台使用。