新闻详情

新闻详情

首页 / 资讯中心 / 详情

【C++】动态内存管理——通关指南

发布时间:2026/9/30 8:58:44来源:尧图网络
【C++】动态内存管理——通关指南
文章目录0. C/C中程序内存区域划分增长方向分配方式析构顺序1.C语言动态内存管理题目2.new and delete2.1内置类型2.2自定义类型3. operator new 和operator delete5.new and delete 实现原理5.1内置类型5.2 自定义类型6.malloc/freenew/delete 区别0. C/C中程序内存区域划分栈区stack局部变量函数参数、返回数据、返回地址等效率高容量有限堆区heap 存放通过 malloc() 等动态分配的内存⼀般由程序员分配释放 若程序员不释放程序结束时可能由OS操作系统回收 。分配⽅式类似于链表。数据段静态区static存放全局变量、静态数据。程序结束后由系统释放。代码段常量区存放函数体类成员函数和全局函数的⼆进制代码 程序里直接写的字符串常量常量区不存常量增长方向栈向下增长就是从高地址向低地址增长。堆向上增长就是从低地址向高地址增长。分配方式堆只能动态分配自己申请new /malloc 栈可静int a 10;可动C99 变长数组 _alloca析构顺序手动释放——自动析构按定义顺序的反向——静态局部对象——全局对象1.C语言动态内存管理题目intglobalVar1;//**常量区不存常量**在静态区/数据段staticintstaticGlobalVar1;//静态区/数据段voidTest(){staticintstaticVar1;//静态区/数据段intlocalVar1;//栈区intnum1[10]{1,2,3,4};//num1是首元素地址在栈区。//num1中的元素可修改也在栈区charchar2[]abcd;//char2是首元素地址在栈区。//char2中的元素可修改也在栈区constchar*pChar3abcd;//pChar3是首元素地址在栈区。//pChar3中的内容是字符串常量**常量区不存常量**在静态区/数据段int*ptr1(int*)malloc(sizeof(int)*4);//ptr1是 地址在栈区。//ptr1中的内容是malloc出的堆区int*ptr2(int*)calloc(4,sizeof(int));//ptr2是 地址在栈区。//ptr2中的内容是calloc出的堆区int*ptr3(int*)realloc(ptr2,sizeof(int)*4);//ptr3是 地址在栈区。//ptr3中的内容是realloc出的堆区free(ptr1);free(ptr3);}1.选择题 选项:A.栈 B.堆 C.数据段(静态区)D.代码段(常量区)char2在哪里____ globalVar在哪里____ staticGlobalVar在哪里____ staticVar在哪里____ localVar在哪里____ num1 在哪里____*char2在哪里___ pChar3在哪里____*pChar3在哪里____ ptr1在哪里____*ptr1在哪里____2.new and delete数组类型用 delete 代替 delete [] 的后果内置类型数组不会崩溃和泄漏但属于未定义行为自定义类型数组少调用 N-1 次析构函数 释放错误地址→内存泄漏 程序崩溃**new 和 delete 必须严格配对 : 单个用 delete数组用 delete [] **2.1内置类型new一个内置类型int*p1newint;new一个内置类型赋值int*p1newint(199);deletep1;new一个内置类型数组int*p2newint[10];new一个内置类型数组赋值全0int*p4newint[10]{0};new一个内置类型数组逐个赋值int*p6newint[10]{3};///只有首元素被赋值int*p5newint[11]{0,2,3};///写了几个初始化几个delete[]p4;delete[]p5;delete[]p6;2.2自定义类型new会调用构造函数delete会调用析构函数classA{public:A(inta,intb1):_a1(a),_a2(b){cout构造函数endl;}A(constAa){cout拷贝构造函数endl;}~A(){cout析构函数endl;}private:int_a122;int_a233;};单个赋值 A*p1newA;A*p2newA(3);deletep1;deletep2;多个 A*p2newA[3];///直接调用3次默认构造多种情况 A*p3newA[3]{aa1,aa2,aa3};///1拷贝构造A*p4newA[3]{A(5,5),A(99,8),A(4,4)};///2拷贝构造被优化为构造A*p5newA[3]{{3,3},{33,66},{88,88}};///3隐式类型转换构造拷贝构造 被优化为构造3. operator new 和operator deletenew底层调用operator new函数申请空间。后者调用malloc失败了会抛异常delete底层调用operator delete函数释放空间。后者实际通过free来释放空间。5.new and delete 实现原理5.1内置类型new delete释放单个元素空间new [] delete []释放连续空间malloc newdelete free基本类似new失败抛异常malloc失败返回空NULL5.2 自定义类型new调用operator new申请空间调用构造函数new T [N]调用operator new[ ],operator new[ ]调用operator new申请N 个对象的空间调用N次构造函数delete析构函数调用operator delete释放空间deleteN 次析构函数调用operator delete[ ],operator delete[ ]调用operator delete释放N 个对象的空间6.malloc/freenew/delete 区别同都是在堆上申请空间都要手动 free/delete释放异malloc/free是函数在stdlib.h头文件中new/delete是操作符malloc/free不初始化new/delete构造函数初始化malloc手动算大小new不用malloc返回值是void* 要强转。new不用new失败抛异常——捕获异常malloc失败返回空NULL——判空申请自定义类型malloc/free 自动调用构造初始化和析构资源清理释放new/delete 没有
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

“量子纠缠”式通灵:架构师视角下的幽灵Bug排查实战指南 2026/9/30 8:58:42

“量子纠缠”式通灵:架构师视角下的幽灵Bug排查实战指南

凌晨两点十七分,线上订单接口突然开始飘零星 500,日志里只有一行孤零零的 timeout,本地怎么压都不复现。我盯着屏幕,忽然理解了为什么有人会认真琢磨"用量子纠缠通灵:呼叫已故架构师改bug"这种梗——它不是玩…

阅读更多 →
从聆讯到挂牌:IPO流程机制与投资者打新关键指标解析 2026/9/30 8:58:42

从聆讯到挂牌:IPO流程机制与投资者打新关键指标解析

“飞速创新通过上市聆讯”这则消息,圈内人看到的是“临门一脚”,圈外人看到的可能只是一个“营收21.75亿、利润4.2亿”的数字。刚好最近有朋友在准备港股IPO,天天跟我聊聆讯的事,我就借着这个案例,把上市聆讯从流程机制…

阅读更多 →
大小端字节序详解:从线上事故到跨平台数据转换实战 2026/9/30 8:58:42

大小端字节序详解:从线上事故到跨平台数据转换实战

“大小端”(Endianness)在不少程序员眼里,是那种“面试题常客、平时用不上”的知识点。我刚工作时也这么认为,直到有一次线上故障让我在一个字节序问题上耗了一整天。那次项目的两块控制板分别跑 x86 和 ARM,它们共享同…

阅读更多 →
任意斜率直线绘制实战:Bresenham算法与常见坑解析 2026/9/30 8:58:42

任意斜率直线绘制实战:Bresenham算法与常见坑解析

简介:一份计算机图形学实验设计报告,聚焦绘制任意斜率直线段的主题,适合图形学课程设计、期末实验或算法入门学习者参考。报告以CLine直线类为主线,详细给出了MoveTo()与LineTo()成员函数的声明和实现,并基于中点Brese…

阅读更多 →
YOLOv5模型诊断:从指标幻觉到健康体检的完整框架 2026/9/30 8:58:42

YOLOv5模型诊断:从指标幻觉到健康体检的完整框架

1. 这不是“指标列表”,而是一套模型诊断的完整思维框架你有没有遇到过这样的情况:训练完一个YOLOv5模型,终端输出一堆数字——mAP0.50.82、Precision0.79、Recall0.85……你截图发到群里,大家纷纷点赞“不错啊”,但一…

阅读更多 →
Qwen-Image-2.1轻量化换脸:LORA微调与高级采样器协同优化实战 2026/9/30 8:58:35

Qwen-Image-2.1轻量化换脸:LORA微调与高级采样器协同优化实战

1. 项目概述:这不是“换脸APP”,而是一套可本地复现的轻量化图像生成增强方案Qwen-Image-2.1加速LORA,换脸LORA,搭配高级采样器——这个标题乍看像短视频平台的流量钩子,但拆开来看,它其实指向一个非常具体…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉