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

C++中指针数组的内存占用问题及Int *ptr = new int[3];的内存疑惑

嘿,我来帮你把这两个疑问理得明明白白:

一、new int[3]创建的数组在内存中占用的字节数

在32位系统环境下,int类型的大小通常是4字节(这是C++主流编译器的标准实现,除非有特殊编译选项修改)。那3个int元素组成的数组,实际占用的内存字节数就是:
3 * sizeof(int) = 3 * 4 = 12字节

补充一句:new分配数组时,底层可能会额外分配一点点内存用来存储数组长度(方便后续delete[]正确释放所有元素),但这部分属于系统管理的开销,不算数组本身的占用空间——如果单说数组元素占用的RAM,就是12字节。

二、32位系统下指针本身的内存占用

你这里大概率混淆了32位和64位系统的差异:

  • 在32位系统中,指针变量的大小是4字节——因为32位地址总线的寻址范围是2^32,用4字节就能存下所有内存地址。
  • 而你提到的“ptr大小为8字节”,是64位系统的情况,对应64位的地址空间。

所以回到你的问题:在32位系统下,仅指针ptr本身(完全不包含它指向的数组元素)占用的总字节数是4字节,不是8字节。指针变量的大小只和系统位数有关,和它指向的对象类型、大小都没关系——哪怕它指向一个1000个元素的数组,指针本身还是只占4字节(32位)或8字节(64位)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 20:52:30