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

C++中两行动态内存分配代码有何区别?是否都创建大小为10的数组?

C++ 两种动态内存申请写法的核心差异

结论:只有第二行代码能创建长度为10的int类型数组,两行代码的作用完全不同:

  • 第一行代码 int *arr = new int(10);
    作用是在堆内存中申请1个int类型的存储空间,并且将这个int值初始化为10,指针arr指向这单个int的地址,完全不涉及数组分配。
  • 第二行代码 int *arr = new int[10];
    作用是在堆内存中申请一块连续的、可容纳10个int类型元素的存储空间,也就是长度为10的int数组,数组内的元素默认未初始化,值为随机垃圾值。

额外注意内存释放的写法差异:
单个元素申请的内存用 delete arr; 释放
数组申请的内存必须用 delete[] arr; 释放,混用会触发未定义行为,轻则内存泄漏,重则程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:09:04