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

为何C++中int指针默认占用8字节?预期应为4字节

为什么int指针在我的环境中占用8字节而非预期的4字节?

指针的大小只取决于你使用的操作系统位数(内存寻址能力),和它指向的数据类型完全无关。

在64位操作系统/编译环境中,内存地址是64位的,所以指针需要8字节来存储这个地址;只有32位系统中,指针才是4字节。你的测试结果里int32_t显示为4字节,说明int本身确实是32位(4字节),但int*作为指针,它的大小由系统位数决定,和int的大小没有关联。

补充说明:

  • 任何类型的指针(char*/double*/自定义类型指针)在同一个系统下,大小都是相同的,因为它们的核心作用都是存储内存地址。
  • 如果你在32位编译环境下运行这段代码,sizeof(arr)的结果就会是4字节。

你的测试代码:

#include<iostream>

using namespace std;

int main(){
    int* arr = new int;

    cout << "arr " << sizeof(arr)<<endl;

    cout << "int16 " << sizeof(int16_t)<<endl;
    cout << "int32 " << sizeof(int32_t)<<endl;
    cout << "int64 " << sizeof(int64_t)<<endl;
}

运行结果:

arr 8
int16 2
int32 4
int64 8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 18:01:25