当前位置: 首页 > news >正文

【C++】零基础入门 · 第 9 节:动态内存管理(new 与 delete)

在第 8 节中,我们学习了指针的基本概念——如何声明指针、取地址、解引用。指针的强大之处不仅在于它能指向已有的变量,更在于它能让我们在程序运行时动态申请内存。本节将介绍newdelete这对运算符,带你掌握 C++ 中动态内存管理的核心技能。

1. 栈内存与堆内存

在 C++ 程序中,内存主要分为几个区域,其中最常接触的是栈(Stack)堆(Heap)

1.1 栈内存

栈内存由编译器自动管理。当你声明一个局部变量时,它就被分配在栈上;当变量离开作用域时,栈内存自动释放。

voidfoo(){intx=10;// x 分配在栈上intarr[5]={};// arr 也分配在栈上}// 离开函数,x 和 arr 自动释放

栈内存的特点是:分配和释放速度极快,但空间有限(通常只有几 MB),且大小必须在编译时确定。

1.2 堆内存

堆内存由程序员手动管理,空间更大,适合存放那些大小不确定或需要长期存活的数据。

voidfoo(){int*p=newint(42);// 在堆上分配一个 int// ... 使用 *p ...deletep;// 手动释放}

堆内存的特点是:空间较大,分配速度相对较慢,且必须由程序员手动释放,否则会造成内存泄漏。

对比项栈内存堆内存
管理方式编译器自动程序员手动
分配速度较慢
空间大小较小(通常几 MB)较大(取决于系统)
大小确定时机编译时运行时
是否需要手动释放

2. new 运算符

new运算符用于在堆上分配内存,并返回指向该内存的指针。

2.1 分配单个变量

int*p=newint(42);// 在堆上分配一个 int,初始值为 42double*q=newdouble;// 在堆上分配一个 double,未初始化

new int(42)会做两件事:在堆上申请一块足够存放int的内存,然后将这块内存的值初始化为42,最后返回其地址。如果不提供初始值(如new double),内存中的值是未定义的。

2.2 分配数组

int*arr=newint[10];// 在堆上分配 10 个 int 的数组double*darr=newdouble[n];// n 可以是运行时才确定的变量

new int[10]会在堆上连续分配 10 个int大小的空间,并返回首元素的指针。注意方括号[]不能省略。数组长度可以是变量——这是

http://www.jsqmd.com/news/905963/

相关文章:

  • 2026淮安卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房渗漏 本地专业防水公司TOP5权威推荐(2026年6月本地最新深度调研) - 防水百科
  • 2026年 东莞防水袋厂家推荐排行榜:手机/相机/PVC/TPU/沙滩防水袋品牌优选与高防护耐用 - 品牌企业推荐师(官方)
  • C 语言进阶:联合体与枚举精讲,从原理到实战吃透两大自定义类型
  • 开发者在模型迭代时利用 Taotoken 快速切换并测试新模型
  • 终极指南:如何用免费自动化工具轻松抢到美国签证面试名额
  • 2026莆田卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房渗漏 本地专业防水公司TOP5权威推荐(2026年6月本地最新深度调研) - 防水百科
  • 前端视角下的 C#
  • 意图共鸣科技《认知智能白皮书》——认知架构(CA):把“价值观”写进独立模块的工程推演
  • 【C++】零基础入门 · 第 10 节:结构体与类
  • 读文献怎么做能节省80%的时间
  • 2026苏州卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房渗漏 本地专业防水公司TOP5权威推荐(2026年6月本地最新深度调研) - 防水百科
  • 为什么你的Ubuntu没有/proc/config.gz?深入解读CONFIG_IKCONFIG编译选项与发行版策略
  • ATtiny13A驱动LED模拟火焰:超低功耗复古油灯改造全流程
  • 2026北京卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房渗漏 本地专业防水公司TOP5权威推荐(2026年6月本地最新深度调研) - 防水百科
  • 如何通过QMCDecode实现QQ音乐格式自由转换:打破平台限制的技术方案
  • 广告投放对接平台:找到你的“另一半资源”竟如此简单
  • 162、运动控制中的仿真:模型降阶与实时仿真
  • 2026宿迁卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房渗漏 本地专业防水公司TOP5权威推荐(2026年6月本地最新深度调研) - 防水百科
  • 从0到日均10万请求:某金融客户DeepSeek+阿里云ACK集群灰度上线全过程(含自动扩缩容策略与SLA保障机制)
  • AI黑客能力太猛!GPT-5.5把网络安全测评玩坏了
  • 基于Arduino的声控房间自动化系统与POV状态显示器制作指南
  • 科目三方法论--单点突破法
  • Win10资源管理器导航窗格太乱?教你一键删除3D对象、视频等多余文件夹(附注册表脚本)
  • AI漫剧软件厂商排名头部指标PK:信息梳理与选型前 - 资讯快报
  • 2026年品牌互联网营销服务商Top5能力最新评测 - GEO优化
  • 用 CrewAI 搭建一个自动化内容生产流水线
  • Python 开发者三步接入 Taotoken 调用 Claude 与 GPT 模型
  • 应对负面人际干扰的理性策略
  • 保姆级避坑指南:在Ubuntu 18.04上搞定LeGO-LOAM与KITTI数据集(含话题不匹配、编译失败等常见问题解决)
  • 163、运动控制中的测试:阶跃响应与频率响应