c++ - 存储指针值需要多少位?

标签 c++ pointers memory bit

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

最佳答案

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

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

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

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

关于c++ - 存储指针值需要多少位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51361924/

相关文章:

c - 内存是在函数结束时用 malloc 分配还是用 calloc 释放?

algorithm - MIPS 汇编语言中的内存访问

c++ - 在 C++ 中将位序列转换为 uint32_t

c++ - C++11 的编译器标志 - 找不到计时文件

c++ - 信号量一释放就启动线程

c++ - int to void* - 避免 c 风格的转换?

c++ - 配置 Doxygen 以忽略源代码注释语言 (SAL)

c - strcmp 调用不断使我的程序崩溃

java - 在 Java 中根据可用内存管理线程数

python - Python 的 id() 有多独特?