存储指针值需要多少位
How many bits are required to store the pointer value?
据我所知,指针在32位系统上的大小通常为4字节,在64位系统上为8字节。但据我所知,并不是所有的比特都用于存储地址。如果是,将空闲位用于其他目的是否安全?如果是,指针内存空间中的32位和64位系统如何以及有多少空闲位可用?
在编写当前64位Intel芯片时,内部使用48位指针。
我遇到的每一个C++编译器都将这个48位指针抽象为64位指针,其中最高有效的16位设置为零。
但是,使用任何空闲位的行为都是未定义的。
在32位芯片成为常态的末期,可以拥有4GB的物理内存,更不用说虚拟内存了。所有32位都用于一个指针。
将指针值中的任何位用于不同目的都是不可移植的。
您可以查看平台的文档,看看它是否保证指针值中的任何特定位都可以使用。很可能即使它们没有直接参与寻址,它们也被保留供平台使用。
相关文章:
- 数组由其类自己的指针指向的大小是多少?
- char指针或char变量的默认值是多少
- 存储指针值需要多少位
- 1000共享指针的记忆力为多少
- 指针数组中将有多少内存分配
- 对象指针如何知道要删除多少内存
- 与C 中的普通指针相比,智能指针的开销是多少
- 在 C 中" "价值的确切回报是多少?是指针吗?
- 一个C++指针使用多少内存
- 我们可以有多少级别的指针
- 如果指针指向数组或对象,那么它的值是多少
- 最大指针变量中我们可以添加多少颗星
- C++智能指针取消引用 - 检查它是否已初始化的开销是多少?
- c++中指针的大小是多少?
- 虚拟函数表指针的大小是多少?
- 这里访问了多少个不同的指针/间接层
- 指针的大小是多少?
- 下面的指针将写入多少字节
- 指针的大小是多少?它究竟取决于什么
- 接收一串"chars",并尝试使用指针计算其中有多少个相同类型