济南外贸网站建站江苏永坤建设有限公司网站

web/2025/9/29 1:12:18/文章来源:
济南外贸网站建站,江苏永坤建设有限公司网站,专业排名优化公司,外销网站怎么做的目录 一、C内存分布 二、C语言与C内存管理方式 1、C语言中动态内存管理方式#xff1a;malloc/calloc/realloc/free 2、C中的内存管理方式#xff1a;new/delete 三、operator new与operator delete函数 1、函数概念#xff1a; 2、函数使用#xff1a; 3、底层原理…目录 一、C内存分布 二、C语言与C内存管理方式 1、C语言中动态内存管理方式malloc/calloc/realloc/free 2、C中的内存管理方式new/delete 三、operator new与operator delete函数 1、函数概念 2、函数使用 3、底层原理 四、new和delete的实现原理 1、对于内置类型 2、对于自定义类型​​​​​​​ 五、内存泄漏 1、概念 2、内存泄漏分类 3、避免内存泄漏 一、C内存分布 c/c中程序内存区域划分 1、栈区又叫堆栈--非静态局部变量/函数参数/返回值等等栈是向下增长的。 2、内存映射段是高效的I/O映射方式用于装载一个共享的动态内存库。用户可使用系统接口 创建共享共享内存做进程间通信。 3、堆区用于程序运行时动态内存分配堆是可以向上增长的。 4、数据段(静态区)--存储全局数据和静态数据。 5、代码段(常量区)可执行的代码/只读常量。 二、C语言与C内存管理方式 1、C语言中动态内存管理方式malloc/calloc/realloc/free malloc在内存的动态存储区中分配一块长度为size字节的连续区域参数size为需要内存空间的长度返回该区域的首地址 calloc与malloc类似不同点是函数calloc() 会将所分配的内存空间中的每一位都初始化为零 realloc 给一个已经分配了地址的指针重新分配空间可以做到对动态开辟内存大小的调整。 void Test1() {char* ptr1 (char*)malloc(sizeof(char));int* ptr2 (int*)calloc(4, sizeof(int));int* ptr3 (int*)realloc(ptr2, sizeof(int) * 10);free(ptr1);free(ptr3); } 2、C中的内存管理方式new/delete C的内存管理方式通过new和delete操作符进行动态内存管理。 为什么c要出一套自己的内存管理规则 1、C语言的申请内存比较繁琐要强转要计算大小要检查返回值 2、无法对自定义类型的空间申请做出很好的控制针对自定义类型能更好的初始化与清理 1new/delete操作内置类型 void Test2() {// 动态申请一个int类型的空间int* ptr1 new int;// 动态申请一个int类型的空间并初始化为10int* ptr2 new int(10);// 动态申请10个int类型的空间int* ptr3 new int[3];// 动态申请10个int类型的空间并初始化/不完全初始化int* ptr4 new int[10] {1, 2, 3, 4, 5};delete ptr1;delete ptr2;delete[] ptr3;delete[] ptr4; }   注意申请和释放单个元素的空间使用new和delete操作符申请和释放连续的空间使用 new[]和delete[]注意匹配起来使用。 2、new和delete操作自定义类型 new和delete相比于malloc和free的优点 申请空间时malloc只开空间new不仅开空间还会调用构造函数初始化。 释放空间时delete会调用析构函数free不会。 当我们运行以下程序可知 class A { public:A(int a 0){cout A() // 调用构造函数 endl;}~A(){cout ~A() // 调用析构函数 endl;}private:int _a; };int main() {A* a new A(1);delete a;return 0; } 且new在申请内存时不需要像malloc一样检查合法性new申请空间失败会自动抛异常 void Test3() {//malloc失败返回空指针int* ptr1 (int*)malloc(sizeof(int) * 10);assert(ptr1); //malloc出来的需要检查合法性int* ptr2 new int; //new出来的不需要检查合法性失败会自动抛异常 } 三、operator new与operator delete函数 1、函数概念 注意operator new和operator delete不是对new和delete的重载是库函数。 new和delete是用户进行动态内存申请和释放的操作符operator new 和 operator delete 是系统提供的全局函数new在底层调用operator new全局函数来申请空间delete在底层通过调用 operator delete全局函数来释放空间。 operator new的本质是对malloc的封装。 该函数实际上就是通过malloc来申请空间申请成功时直接返回失败时抛异常 operator delete的本质是对free的封装。 2、函数使用 void Test4() {int* ptr2 (int*)malloc(sizeof(int));free(ptr2);// 使用方法与malloc/free相似int* ptr1 (int*)operator new(sizeof(int));operator delete(ptr1); } operator new/operator delete与malloc/free的相同点 功能一样不会去调用构造函数和析构函数。 不同点 operator new不需要检查开辟空间的合法性失败就抛异常。 3、底层原理 new的底层原理转换成调用operator new 构造函数 delete的底层原理转换成调用operator delete 析构函数 operator new与operator delete的类专属重载 为了避免有些情况下我们反复的向堆申请释放空间于是产生池化技术内存池直接找内存池申请释放空间此时效率更高更快。new/delete的类专属重载就是在new调用operator new的时候就可以走内存池的机制从而提高效率。 内存池 内存池是一种内存管理策略它通过预先分配一定数量的、大小固定的内存块来优化内存分配性能和减少内存碎片化从而提高资源利用率。内存池允许应用程序快速、高效地获取和释放内存而不需要频繁地从系统内存中分配和释放小块内存。 四、new和delete的实现原理 1、对于内置类型 对于内置类型new和mallocdelete和free基本类似 不同点为 new/delete申请和释放的是单个元素的空间new[]和delete[]申请的是连续空间。new在申请空间失败时会抛异常malloc会返回NULL。 2、对于自定义类型​​​​​​​ new的原理 调用operator new函数申请空间。在申请的空间上执行构造函数完成对象的构造。 delete的原理 在空间上执行析构函数完成对象中资源的清理工作。调用operator delete函数释放对象的空间。 new T[N]的原理 调用operator new[]函数在operator new[]中实际调用operator new函数完成N个对 象空间的申请。在申请的空间上执行N次构造函数。 delete[]的原理 在释放的对象空间上执行N次析构函数完成N个对象中资源的清理。调用operator delete[]释放空间实际在operator delete[]中调用operator delete来释放空间。 五、内存泄漏 1、概念 内存泄漏是一种编程错误发生在一个程序重复地分配内存但未能释放已不再使用的内存。这将导致系统内存逐渐耗尽最终可能使得程序或整个系统变得不稳定甚至崩溃。 内存泄漏的危害 内存泄漏会导致程序持续占用内存而不释放造成系统性能下降。 当内存泄漏累积到一定程度时程序运行速度变慢响应时间变长。 当大量内存被泄漏时会导致系统内存不足从而造成使系统崩溃或死锁等问题。 2、内存泄漏分类 在C/C程序中一般我们主要关心以下内存泄漏 堆内存泄漏(Heap leak) 堆内存指的是程序执行中依据须要分配通过malloc / calloc / realloc / new等从堆中分配的一块内存用完后必须通过调用相应的 free或者delete 删掉。假设程序的设计错误导致这部分内存没有被释放那么以后这部分空间将无法再被使用就会产生Heap Leak。 系统资源泄漏: 指程序使用系统分配的资源比方套接字、文件描述符、管道等没有使用对应的函数释放掉导致系统资源的浪费严重可导致系统效能减少系统执行不稳定。 3、避免内存泄漏 1、养成良好的编码规范确保每次分配内存后都有对应的释放内存的操作。 2、使用垃圾回收机制一种自动管理内存的方式可以自动回收无用的内存防止内存泄漏。 3、采用RAII思想或者智能指针来管理资源。 4、进行内存泄露测试可以使用一些内存泄露测试工具比如Valgrind、Memory Profiler等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

陕西正天建设有限公司网站做微商海报的网站

在宝塔面板环境下安装nps服务端 一、所需环境二、开始安装三、打开nps控制台四、更改默认账号密码和连接秘钥五、反向代理挂载SSL证书 一、所需环境 阿里云轻应用服务器(选择宝塔应用镜像)域名(最好也是阿里注册的域名)对应的ssl…

网站建设用户核心哈尔滨网络公司定制开发

前言 因为升级了安卓13,然后有个app需要恢复数据,打算和以前一样直接删除Android/data下对应目录再添加,结果不行,以下是结合网上以及自己手机情况来做的一种解决方案。 解决 准备: 待恢复app(包名com.…

做废塑料生意那个网站最专业wordpress主题 线条

1.场景分析 现有需求需要将elasticsearch的备份至hdfs存储,根据以上需求,使用logstash按照天级别进行数据的同步 2.重难点 数据采集存在时间漂移问题,数据保存时使用的是采集时间而不是数据生成时间采用webhdfs无法对文件大小进行设置解决…

重庆怎样建设网站搜索引擎优化的简写是

数据库对层次结构的处理模型有好多种,可以根据自己的需求来设计模型,当然最简单的也是最容易设计的模型就是所谓的邻接模型。在这方面,其他数据库比如Oracle提数据库对层次结构的处理模型有好多种,可以根据自己的需求来设计模型&a…

手机网站自适应分辨率竞价推广年终总结

算法-数据结构 金无足赤人无完人,在处理实际问题的时候我们可以使用到很多合适的数据结构,但目前还没有一个数据结构可以称的上完美。查询速度快的,插入的速度就会慢;插入速度和查询速度都快得,占用的空间就会多&…

关于进行网站建设费用的请示策划书模板范文

文章目录 开发平台基本信息问题描述解决方法 开发平台基本信息 芯片: MT8766 版本: Android 12 kernel: msm-4.19 问题描述 客户要求设备默认开启usb共享网络,并且网络共享给PC端时,PC端动态获取到的子网掩码、网关是固定不变的。 解决方法 解决方案…

宁波专业网站制作网络系统集成

引言 冒泡排序作为排序中一个比较重要的方法,这里做一些简单的记录。 示例 本例中将一组数据2,4,3,8,5按照从小到大的顺序进行冒泡排序。首先说一下,冒泡排序是怎么排序的:将数组中相邻的两个…

网站引导页psd廊坊企业网站建设

众乐邦网络科技有限公司(以下简称为“众乐邦”)是一家企业服务公司。其旗下的众乐邦灵活用工数字化薪税管理平台(以下简称为灵活用工管理平台),以财税服务视角切入灵活用工场景,连接企业、灵活就业者和监管…

宣城网站开发专业制河南做网站公司汉狮

来源:FT中文网、5G作者:卢卡斯、法尔兹丨英国《金融时报》。未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括:建立AI智能系统智商评测体系&#xff0…

哪些企业网站做的比较好网站的站点建设

官网:安装 - TailwindCSS中文文档 | TailwindCSS中文网 tips:只按照官网的配置可能会导致样式不加载/加载不生效的问题 1、正确安装指令 npm install -D tailwindcss postcss autoprefixer npx tailwindcss init -p 自动生成 ​tailwind.config.js​…

网站做302重定向会怎么样企业网站更新什么内容

工作最近得闲,准备学下React-Native。MAC下安装Android Studio的时候,忘记安装Avd Manager。无奈之下删除Android Studio准备重装,却发现有很多配置文件残留在系统上,导致再次重装的时候完全跳过了Avd Manager的配置。在网上找了一…

门户网站有成都seo优化排名推广

正题 洛谷评测记录:https://www.luogu.org/recordnew/lists?uid52918&pidUVA1328 POJ链接:http://poj.org/problem?id1961 题目大意 求一个字符串每个前缀的最短循环循环次数。 解题思路 计算next数组,然后直接计算循环节: 详见:POJ2752-Seek…

门户网站建设和运行招标公告网络舆情风险研判报告

转载自 面象对象设计6大原则之六:迪米特原则迪米特原则(LOD),The Law Of Demeter,也称为最少知识原则定义一个对象应该对其他对象有最少的了解。也就是说一个类耦合和调用一个类应该知道的最少,它只关心被耦…

建设银行网站查询html5素材网

Go和Java实现访问者模式 我们下面通过一个解压和压缩各种类型的文件的案例来说明访问者模式的使用。 1、访问者模式 在访问者模式中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随 着访问者改变而…

如何建立网站站点seo推广优化费用

HarmonyOS入门学习 前言快速入门ArkTS组件基础组件Image组件Text组件TextInput 文本输入框Buttonslider 滑动组件 页面布局循环控制ForEach循环创建组件 List自定义组件创建自定义组件Builder 自定义函数 状态管理Prop和LinkProvide和ConsumeObjectLink和Observed ArkUI页面路由…

数码网站模板申请账号注册

场景 设计模式-装饰者模式在Java中的使用示例: 设计模式-装饰者模式在Java中的使用示例_java装饰者模式例子-CSDN博客 上面装饰器的调用示例如下 AbstarctComputer computer;//要买1台电脑computer new BaseComputer();//加一个内存条computer new MemoryDecor…

经营范围 网站开发微信电脑网页版

有什么方法可以指定字符串长度,不够的自动补空格char定义的是一个半角字符。 当人心变成市场,当市场变成战场,战场埋葬多少理想。char[]定义的是一个不定长的数组,实际上是指针,用前要初始化。不过某些编程环境可能会根…

南昌中小企业网站制作下载微信小程序app

最近工作一直比较忙,很多想法没时间写下来,最近回复了CSDN杂志社的一系列相关的建模问题,顺便贴在这里,欢迎大家讨论。 以下是我对建模的一些看法 1 你怎么看待建模?作为一个程序员,可能每个人都经历过这样…

020网站系统wordpress怎么做

大家好,我是全栈小5,欢迎阅读小5的系列文章,这是《话题》系列文章 目录 背景招聘分析一、技术更新换代的挑战二、经验与技术的双重优势三、职业发展的多元化选择四、个人成长与职业规划的平衡五、结语文章推荐 背景 35岁被认为是程序员职业生…

网站建设公司 云智互联深圳个人网站建设

文章目录 引言工作原理剖析EnableAutoConfiguration自动配置生效总结 引言 不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技能项。除了某些老旧的政府项目或金融项目持有观望态度外,如今的各行各业都在飞速的拥抱这个已经…