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

【C++笔记】内存管理流食般投喂

声明以下知识相关资料来自比特官网和小编手搓~C/C内存管理1、C/C内存分布2、C语言中动态内存管理方式malloc/calloc/realloc/free3、C内存管理方式3.1、new/delete操作内置类型3.2、new和delete操作自定义类型4、operator new 与 operator delete 函数5、new 和 delete 的实现原理5.1、内置类型5.2、自定义类型6、定位new表达式placement-new7、malloc/free 和 new/delete 的区别1、C/C内存分布C语言和C的内存划分是一样的常见内存区域就是栈区、堆区、静态区、常量区现在推出命名更加官方的区域划分静态区 - 数据段常量区 - 代码段。栈区函数栈帧的创建其空间就是在栈上申请的常见的局部变量也在这及时申请、销毁还有函数参数、返回值等等。堆区当数据结构存储数据空间不够时额外申请的空间都是在堆区上申请开辟的这个区域是给操作者发挥的区域。给点题目试试水int globalVar 1; static int staticGlobalVar 1; void Test() { static int staticVar 1; int localVar 1; int num1[10] { 1, 2, 3, 4 }; char char2[] abcd; const char* pChar3 abcd; int* ptr1 (int*)malloc(sizeof(int) * 4); int* ptr2 (int*)calloc(4, sizeof(int)); int* ptr3 (int*)realloc(ptr2, sizeof(int) * 4); free(ptr1); free(ptr3); }2、C语言中动态内存管理方式malloc/calloc/realloc/free3、C内存管理方式C这里用独有的 new 和 delete 操作符进行内存管理。3.1、new/delete操作内置类型void Test() { // 动态申请一个int类型的空间 int* ptr4 new int; // 动态申请一个int类型的空间并初始化为10 int* ptr5 new int(10); // 动态申请10个int类型的空间 int* ptr6 new int[10]; delete ptr4; delete ptr5; delete[] ptr6; //格式一一对应 }注意申请释放一个空间 - new delete申请释放连续的空间 - new[] delete[]。3.2、new和delete操作自定义类型new/delete 和 malloc/free 的最大区别就是 new/delete 除了会开空间还会调用构造函数/析构函数。//现有一个 A类 int main() { A* p1 (A*)malloc(sizeof(A)); A* p2 new A(1); free(p1); delete p2; A* p3 (A*)malloc(sizeof(A) * 10); A* p4 new A[10]; free(p3); delete[] p4; return 0; }4、operator new 与 operator delete 函数operator new 其实就是malloc的套个公司换个名的事不过operator new解决了malloc申请完要手动验证是否申请成功operator new是不需要管的他自己会处理申请失败了会抛异常。operator delete同理也就是free套个公司换个名的事。5、new 和 delete 的实现原理5.1、内置类型内置类型对于new/delete 与 malloc/free来说基本是一样的只不过对于单个空间和连续空间用的是 new/delete 和 new[]/delete[]对于空间申请失败new是抛异常malloc是返回NULL。5.2、自定义类型new 的原理调用operator new函数申请空间再调用构造函数对申请的空间进行构造。底层malloc 构造delete 的原理先调用析构函数对申请的资源进行清理与释放。底层析构 freenew T[N] 的原理调用operator new[]函数实际是调用operator new函数申请N个对象空间在申请的空间上进行N次构造函数的执行。delete[] 的原理先调用N次析构函数对N个对象申请的资源进行清理和释放再调用operator delete[]函数实际调用operator delete函数释放空间。6、定位new表达式placement-new定位new表达式的使用场景是配合着内存池进行使用的。内存池生活费小金库妈妈每月定期给我、爸爸、姐姐生活费我们日常开销就在自己的生活费小金库里面取不需要有一笔消费。就问妈妈要。放在内存池里面的空间只是有一些空间放那我们可以找他要空间但是对于自定义类型对象要来空间的并没有调用构造函数进行初始化这个工作就交给了 定位new表达式。定位new表达式的使用方法new指针指向空间类型 / new指针指向空间类型实参初始化值int main() { A* p1 (A*)malloc(sizeof(A)); new(p1)A; p1-~A(); // 成员函数并不包含在对象里但是得通过对象去公共存储池里去调用 free(p1); A* p2 (A*)malloc(sizeof(A)); new(p2)A(10); p2-~A(); free(p2); return 0; }7、malloc/free 和 new/delete 的区别相同点在堆上申请空间用户手动释放。不同点1、malloc和free是函数new和delete是操作符。2、malloc申请空间不会初始化new会初始化。3、malloc申请空间需要计算申请空间大小new申请多个空间只要在 [] 里输入你想开的对象个数。4、malloc返回值是void*C中必须强转new不需要他后面跟的就是类型。5、malloc申请空间失败返回NULL使用时必须手动判空new不需要不过要捕获异常。6、申请自定义类型时malloc/free不会调用构造函数和析构函数new在申请空间后会调用构造函数对实例化出的对象进行初始化delete会先调用析构函数将申请的资源进行清理和释放再释放空间。

相关文章:

【C++笔记】内存管理流食般投喂

声明:以下知识相关资料来自比特官网和小编手搓~C/C内存管理1、C/C内存分布2、C语言中动态内存管理方式:malloc/calloc/realloc/free3、C内存管理方式3.1、new/delete操作内置类型3.2、new和delete操作自定义类型4、operator new 与 operator delete 函数…...

如何测量WIFI通讯中客户端的漫游时间

在工业WiFi通信中会有很多涉及漫游的场景,例如AGV车辆在整个车间内移动,车间范围内会布置多个AP来完成信号覆盖,AGV车辆运动过程中远离已连接AP,接近另一个AP时就会发生漫游,由于工业通讯协议对实时性要求很高&#xf…...

Display Driver Uninstaller:彻底解决显卡驱动问题的专业工具指南

Display Driver Uninstaller:彻底解决显卡驱动问题的专业工具指南 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-u…...

Perplexity谚语查询功能实测报告:7类典型误用场景+5步精准调优法,错过即降效40%

更多请点击: https://kaifayun.com 第一章:Perplexity谚语查询功能的核心价值与适用边界 Perplexity 的谚语查询功能并非通用语言模型的简单问答接口,而是一个面向文化语义深度解析的专用能力模块。它依托高质量结构化谚语知识图谱与上下文感…...

从零搭建Perplexity增强型新闻监控系统:Python+LangChain+自定义Fact-Check插件(含GitHub可运行代码仓链接)

更多请点击: https://intelliparadigm.com 第一章:Perplexity科技新闻搜索 Perplexity 是一款以实时性、可溯源和语义理解见长的AI驱动搜索工具,专为技术从业者与研究人员优化。其“科技新闻搜索”功能并非传统关键词匹配,而是基…...

直线模组选型别再“先选电机“了!导程才是起点(附正向推导五步法)

引言:一个高频"翻车"现场在直线模组(丝杆模组)选型中,有个环节经常出现逆向翻车——工程师先选好了电机,再去配丝杆导程,结果发现:❌ 速度上不去❌ 推力不够大❌ 电机严重发热问题的根…...

Perplexity生物检索黄金公式:[实体]+[关系]+[证据等级]+[时间窗]——经Nature子刊12篇方法论论文交叉验证

更多请点击: https://intelliparadigm.com 第一章:Perplexity生物检索黄金公式的提出与演进 Perplexity生物检索黄金公式(Perplexity-Bio Retrieval Golden Formula, PBRGF)并非源于单一论文,而是随着跨模态生物语义建…...

如何彻底解决Mac设备滚动方向冲突:Scroll Reverser终极配置指南

如何彻底解决Mac设备滚动方向冲突:Scroll Reverser终极配置指南 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 你是不是经常在Mac上同时使用触控板和鼠标&#xff0…...

Leetcode 思路-105.从前序与中序序列构造二叉树

105.从前序与中序序列构造二叉树给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。1.简单思路根据先序遍历根节点在前的特点,取到根节点后&a…...

如何用SMUDebugTool完全掌控AMD Ryzen处理器性能

如何用SMUDebugTool完全掌控AMD Ryzen处理器性能 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitcode.com/gh_mir…...

终极量化数据获取指南:3步掌握pywencai高效获取同花顺问财数据

终极量化数据获取指南:3步掌握pywencai高效获取同花顺问财数据 【免费下载链接】pywencai 获取同花顺问财数据 项目地址: https://gitcode.com/gh_mirrors/py/pywencai 在量化投资和金融数据分析领域,获取精准、实时的A股市场数据一直是技术开发者…...

终极指南:轻松解决TranslucentTB运行时依赖问题,让Windows任务栏完美透明化

终极指南:轻松解决TranslucentTB运行时依赖问题,让Windows任务栏完美透明化 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/Transluce…...

5步掌握网易云音乐无损下载的终极方案:轻松获取专业级FLAC音乐资源

5步掌握网易云音乐无损下载的终极方案:轻松获取专业级FLAC音乐资源 【免费下载链接】NeteaseCloudMusicFlac 根据网易云音乐的歌单, 下载flac无损音乐到本地.。 项目地址: https://gitcode.com/gh_mirrors/nete/NeteaseCloudMusicFlac 还在为在线音乐平台的音…...

ThingsBoard共享属性实战:从MQTT订阅到规则链触发的完整数据流解析

ThingsBoard共享属性实战:从MQTT订阅到规则链触发的完整数据流解析 在物联网平台开发中,数据流的清晰理解和精确控制是构建可靠系统的关键。ThingsBoard作为一款开源的物联网平台,其共享属性机制和规则链引擎为开发者提供了强大的数据流转能力…...

把闲置NAS变成数据中枢:Docker部署MySQL全流程与Python连接实战

把闲置NAS变成数据中枢:Docker部署MySQL全流程与Python连接实战 家里那台吃灰的NAS,除了存电影和备份照片,还能干点更有技术含量的事吗?当然可以!今天我们就来彻底激活它的潜力,将它打造成家庭数据处理的&q…...

5分钟快速上手Mermaid Live Editor:免费在线图表编辑器完全指南

5分钟快速上手Mermaid Live Editor:免费在线图表编辑器完全指南 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-li…...

从AVX512到Tensor Core:聊聊那些‘纸上算力’和‘实际跑分’为啥总对不上

从AVX512到Tensor Core:揭秘理论算力与实际性能的鸿沟 当你在产品手册上看到某款CPU标称2.4T FLOPS的峰值算力,或是GPU宣称能提供数十TFLOPs的AI加速性能时,是否曾兴奋地购入设备,却在运行实际工作负载时大失所望?这种…...

别再用math.atan了!用NumPy的angle函数处理复数相位,效率提升不止一点点

别再用math.atan了!用NumPy的angle函数处理复数相位,效率提升不止一点点 在信号处理、图像分析和科学计算领域,复数相位计算是基础但关键的操作。许多开发者习惯性地使用math.atan(y/x)来计算角度,却不知道NumPy提供的angle()函数…...

法学论文降AI工具免费推荐:2026年法学毕业论文知网AIGC超标4.8元一次过完整方案

法学论文降AI工具免费推荐:2026年法学毕业论文知网AIGC超标4.8元一次过完整方案 论文AI率超标这件事,选错工具比不选工具更耽误事。 综合试用和口碑,法学论文降AI我主推嘎嘎降AI(www.aigcleaner.com),4.8…...

从模型文件到孪生场景:一个Three.js三维模型管理系统的完整产品化思考

从技术原型到商业产品:构建Three.js数字孪生系统的全栈实践 在数字孪生技术快速渗透工业制造、智慧城市等领域的今天,如何将一个基于Three.js的模型展示Demo转化为真正具备商业价值的企业级管理系统?这个问题困扰着许多掌握前端3D技术的开发者…...

机械工程论文降AI工具免费推荐:2026年机械工程毕业论文降AI知网维普亲测4.8元达标完整指南

机械工程论文降AI工具免费推荐:2026年机械工程毕业论文降AI知网维普亲测4.8元达标完整指南 帮室友处理过机械工程论文降AI,前前后后试了四款工具,最后固定在嘎嘎降AI(www.aigcleaner.com)。 4.8元,达标率…...

高性价比AI编程神器Claude Code+deepseek v4 pro+vscode——详细安装指南(2026最新版)

一.简介 这套组合性价比极高。关于Claude Code:它由Anthropic公司打造,是直接运行在终端中的AI编程助手,让你不用离开命令行就能完成代码生成、调试、重构、甚至Git提交等各种开发任务。本文将带你完成安装与配置。众所周知Claude 模型集强大…...

新闻传播论文降AI工具免费推荐:2026年新闻传播毕业论文AIGC超标免费4.8元达标完整方案

新闻传播论文降AI工具免费推荐:2026年新闻传播毕业论文AIGC超标免费4.8元达标完整方案 帮室友处理过新闻传播论文降AI,前前后后试了四款工具,最后固定在嘎嘎降AI(www.aigcleaner.com)。 4.8元,达标率99.2…...

论文写得像流水账?资深教授推荐这几个AI写作辅助软件

论文写得像流水账?选题难、逻辑乱、语言差,是很多学生共同的困扰。其实,只要用对AI写作辅助工具,再配合科学的写作流程,就能大幅提升效率和质量。资深教授普遍推荐:千笔AI(中文全流程首选&#…...

3分钟学会:如何用Chrome扩展一键保存完整网页内容

3分钟学会:如何用Chrome扩展一键保存完整网页内容 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-extension…...

2026年做了一个大胆的决定:我要收徒弟了!

如果你已经在测试/开发领域摸爬滚打几年,一定有过这样的困惑:• 报了很多课,学了很多工具/框架/技术,但遇到真实项目问题依然无从下手• 想转型测开/管理/AI测试,却不知道自己的短板到底在哪• 职场遇到瓶颈&#xff0…...

OBS多平台直播终极指南:一键同时推流到多个平台的完整教程

OBS多平台直播终极指南:一键同时推流到多个平台的完整教程 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 你是否曾经想过,为什么每次直播都要为不同的平台单独配…...

深入eDP协议栈:从PSR SDP发送到Main Link开关,一次搞懂屏幕自刷新的完整信令流程

深入eDP协议栈:从PSR SDP发送到Main Link开关,一次搞懂屏幕自刷新的完整信令流程 在显示技术的演进中,嵌入式DisplayPort(eDP)协议因其高效能和低功耗特性,已成为移动设备和高端显示器的首选接口。其中&am…...

如何通过G-Helper让华硕笔记本性能与续航获得双重提升?

如何通过G-Helper让华硕笔记本性能与续航获得双重提升? 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, E…...

终极指南:如何快速免费实现全网页截图完整捕获

终极指南:如何快速免费实现全网页截图完整捕获 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-extension …...