You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么64位计算机上的指针大小是32位计算机的2倍?

指针在32位/64位架构下大小不同的原因
  • 指针的本质是内存地址的存储容器,它的大小完全由CPU的寻址位宽决定,和指针指向的数据类型没有关系:
    • 32位架构的CPU最大支持2^32个内存地址寻址,换算下来最多只能识别4GB的内存空间,每个地址用32个二进制位存储,刚好对应4字节,所以所有指针大小都是4字节
    • 64位架构的CPU寻址位宽扩展到了64位,理论最大寻址空间可达2^64字节(远大于当前民用设备的内存上限),每个地址需要64个二进制位存储,对应8字节,因此指针大小统一为8字节
  • 你给出的示例代码存在语法错误,正确可运行的写法如下:
#include <iostream>
int main() {
    int i = 1;
    int* ptr = &i;
    std::cout << "Size of pointer to i is " << sizeof(ptr) << std::endl;
    return 0;
}
  • 补充说明:同一架构下不管指针指向int、double、自定义结构体还是函数,大小都是固定的,因为所有指针存的都是对应目标的内存起始地址,和目标本身的大小无关。

内容的提问来源于stack exchange,提问作者Svalbard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:09:02