首页/新闻资讯/正文详情

C++——内存管理

发布时间:2026/9/26 9:12:55 来源:云帆数科 栏目:资讯中心
C++——内存管理
1.C/C内存分布栈局部普通变量局部数组指针变量本身堆malloc. realloc calloc开辟出来的内存。(*指针指向的那块空间。)静态区数据段全局变量存放变量 → 内容可以读写常量区代码段/只读段 存放字面常量 → 内存只读不能修改如果在一行代码前面加了const那这个指针指向的内容不可变只能读所以就在常量区。2.C语言中动态内存管理方式malloc. realloc callocmalloc不会初始化内存在堆上开辟size字节内存。参数只传总字节数。calloc自动把全部内存初始化为0相当于mallocmemset在堆上开辟num个每个占size字节的空间。参数元素个数单个元素字节大小。realloc扩容已经在堆上分配好的内存快参数。分为原地扩容和异地扩容。异地扩容的时候会把旧内存的数据拷贝到新内存自动释放旧内存。参数原来老内存块的指针新的总字节大小。在这里需要Free p3不需要Free p2。如果realloc是原地扩容那么你p2再释放一次就释放了两次是程序崩溃的。如果它是异地扩容的话它要指向一个新内存它还会自动把旧内存释放掉。3.C内存管理方式new deletenew关键字自动调用构造函数。delete关键字自动调用机构函数。而malloc和free不会调用operator new和operator delete是全局函数operator new 是c语言的mallocC版本只负责开辟原始堆内存不调用构造函数。operator delete只负责把内存还给堆不会调用析构函数。通俗类比operator new 只租毛坯地皮不装修new A 关键字租地皮 上门装修调用构造new关键字本身就依赖operator new函数。不是额外多出来的东西是new关键字底层依赖的工具函数。new失败处理为抛异常bad_allocnew / delete 是关键字是一套完整流程分配内存构造 / 析构释放内存operator new / operator delete 是底层内存函数专门只做内存的申请/归还。通俗说妈妈管钱给爸爸午饭钱20,妹妹零花钱一天3块这算OK但哥哥上大学花钱比较高频三餐钱每次给日常生活用品钱也要给非常麻烦所以妈妈每月直接转1500(相当于operator-底层内存每次从这取就比较方便4.定位new表达式定位new 不会分配内存它只在一块已经开好的原始内存上调用构造函数把这块裸内存变成一个对象。普通 new A 是两步1. operator new 申请堆内存2. 调用构造函数定位new跳过第一步申请内存只做第二步调用构造函数。注最后要手动调用析构函数不能用delete内存单独free因为这块内存不一定是new来的通俗比喻malloc 租一间空毛坯房只有空间没有家具不是“可以入住的家”-定位 new(p1)A 上门装修摆放家具调用构造函数毛坯房变成能住的家。不会再重新租房​p1-~A() 搬家、清空屋内东西析构析构不一定释放空间只是清理资源​ free(p1) 把空房子退还给房东普通 new A 一次性【租房 装修】全包套餐。定位new房子你自己提前租好它只负责装修。定位new大多配合内存池使用内存池预先一次性申请一大片堆内存malloc。这片内存只是空白内存没有对象。当我们需要对象的时候从内存池拿一块空白内存用定位new调用构造。用完手动调用析构内存放回内存池不直接free还给操作系统。好处减少频繁malloc带来的开销降低内存碎片。问某些时候new[]数组会额外多分配4个字节为什么答Date* p new Date[10];delete[] p; 的时候编译器不知道数组有多少个元素。单个对象 delete p 只调用1次析构​数组 delete[] p 必须循环调用N次析构函数N就是数组元素数量所以 new[] 在数组内存最前面偷偷放了一个整数4字节记录数组元素个数 N10 。[ 4字节计数N10 ][ Date0 ][ Date1 ] ... [Date9 ]↑ ↑隐藏头 p指向这里注这个计数头只有当类拥有自定义析构函数的时候才会分配如果类没有析构函数编译器不需要调用析构就不用存数量不会额外开辟这4字节。例 int *p new int[10]; 很多编译器不会多加4字节只分配40字节。因为int没有析构delete[]不需要循环调用析构。

相关推荐

汇编语言指令大全实战:从指令手册到调试逆向的闭环
汇编语言指令大全实战:从指令手册到调试逆向的闭环

简介:《汇编语言指令大全(详解版)》是一份面向计算机专业学生、嵌入式开发者及底层技术爱好者的指令系统参考资料,用于系统梳理汇编语言的核心概念与常见指令用法,帮助读者理解CPU如何通过指令直接控制硬件操作。资源以单个PDF文件打包&#… · 2026/9/26 9:12:55

物联网无线收发芯片选型指南:Sub-1G射频原理、主流型号与避坑实践
物联网无线收发芯片选型指南:Sub-1G射频原理、主流型号与避坑实践

物联网设备里最不起眼、但选错了最要命的器件,大概就是无线收发芯片。我见过太多项目,传感器选得精细、MCU 挑得讲究、电源方案反复打磨,结果卡在射频这一环:要么传输距离不够,要么功耗压不下来,要么频段不… · 2026/9/26 9:12:43

从选型到落地:一套好用的CRM系统应该怎么用?
从选型到落地:一套好用的CRM系统应该怎么用?

1. 为什么需要一套“桌面级”CRM:先搞懂业务痛点做销售管理这些年,我见过太多团队一开始根本不需要 CRM——或者说,他们不知道自己其实已经“半只脚”踩在 CRM 的门槛上了。客户名单躺在销售个人微信备注里,跟单记录散落在聊天记录… · 2026/9/26 9:12:43

玉米好坏检测数据集实战:COCO标注解析与YOLOv8基线训练避坑指南
玉米好坏检测数据集实战:COCO标注解析与YOLOv8基线训练避坑指南

简介:这份玉米好坏检测数据集面向从事农产品品质分拣、粮食加工质检及计算机视觉算法实践的开发者与研究人员,可用于训练和验证玉米粒好坏二分类或目标检测模型,帮助解决人工分拣效率低、标准不统一的问题。压缩包共约2000个文件,… · 2026/9/26 9:55:35

Windows注册表权限控制实现IDM永久试用
Windows注册表权限控制实现IDM永久试用

1. IDM“永久免费”背后的真相:不是破解,而是权限博弈IDM(Internet Download Manager)是Windows平台上最老牌、最高效的下载加速工具之一,但它的商业授权模式一直让不少用户望而却步——单机授权价格不低,且… · 2026/9/26 9:55:35

CST高速电路仿真实战指南:从物理建模到SIPI问题闭环
CST高速电路仿真实战指南:从物理建模到SIPI问题闭环

1. 这不是软件教程,是高速电路工程师的“仿真生存指南”CST Studio Suite——这个名字在高速数字电路、射频前端、电源完整性设计圈子里,既让人敬畏,又常被悄悄吐槽“上手像学德语”。我第一次打开CST时,面对那个带网格的三维建模… · 2026/9/26 9:55:35

LangGraph+PostgreSQL:构建可恢复的Agent Runtime
LangGraph+PostgreSQL:构建可恢复的Agent Runtime

从手写 Loop 到可恢复 Runtime,这个转折点我摸索了小半年。早期做 Agent 应用时,一个带循环的自动任务跑起来不难,难的是它跑到一半崩了、断网了、数据库连接超时了,你到底是从头再来还是能从断点续上。后来我用 LangGraph 重写了… · 2026/9/26 9:55:29

YaRN位置编码原理与1M上下文实战指南
YaRN位置编码原理与1M上下文实战指南

1. 项目概述:这不是“调个参数就扩上下文”,而是模型能力边界的重新测绘你看到标题里那个“1M tokens”时,第一反应是不是——这玩意儿真能塞进显存跑起来?还是又一个实验室里的数字游戏?我去年在做金融研报摘要系统时… · 2026/9/26 9:55:29

JMeter 5.6.2 压测实战:从安装到分布式与CI集成
JMeter 5.6.2 压测实战:从安装到分布式与CI集成

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 9:55:23

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码