【足球外围app网站】很多工程师都告诉,C/C++语言与其他语言有所不同,它必须开发者自己管理内存资源,动态内存使用不当,更容易导致段错误或者内存外泄,因此内存管理至关重要。本文将以C语言为事例讲解动态内存管理的原理。C/C++语言与其他语言有所不同,它必须开发者自己管理内存资源。
对于动态内存的使用不当更容易导致段错误或者内存外泄。特别是在是内存外泄,内存外泄往往是在程序运行一段时间才不会被找到,使得开发人员无法第一时间定位错误。而比起于个人计算机,嵌入式系统的内存资源堪称匮乏。
作为嵌入式C的开发人员,理解其内存管理的原理能使其更为正确地用于内存资源以及定位程序的bug。本文将以C语言为事例讲解动态内存管理的原理。动态内存的原理1、栈空间与填空间在讲解内存管理之前,我们再行解释一下栈空间与填空间:栈空间是由编译器自动分配获释,足球外围app网站对于AWorks等操作系统,在用户创立一个任务的时候可以由自己要求任务栈空间的大小。
栈空间里面一般存放在着如下数据:在函数内的局部变量(不还包括static定义的变量),在调用另一个函数时留存的通用寄存器信息等。参照如下例程(为了便于解读,省略通用寄存器等信息):在task继续执行s=calculate_sum(a,b);之前,task的栈内留存如下数据:程序接下来继续执行calculate_sum函数,其栈向上快速增长。
在回到task之前,其栈结构如下:继续执行完了calculate_sum之后,根据回到地址回到task之后,栈完全恢复调用之前的结构:所以栈空间存储着代码块内的局部变量,动态地变动着内部的数据。这也就是为什么当模块调用完结后变量就仍然“存活”的原因。填空间是由OS管理的一片区域,开发者须向OS动态申请人一片区域用作操作者数据。
填空间在程序运行时仍然有效地,相等于定义了一个大型的全局数组。必须时向填空间申请人内存,用于完再行还回来。这样可以使得开发者需要动态地掌控空间的大小,而不必须在写出代码的时候就考虑到最糟的情况(定义一个数组必需在编译器之前就确认其大小,用于过程中无法减少或增加,所以必需考虑到最多必须的数据大小)。
填空间由编译器要求,如果开发者想要尝试构建一片动态内存,须向填申请人一片偏移的内存空间。2、内存资源的申请人与获释我们这里以常用的内存操作者模块——malloc与free为事例,讲解操作者动态内存的细节。void*malloc(size)——申请人一片大小为size字节的内存。
参照右图,灰色部分是早已被用于的内存,空白部分则是可以被申请人用于的内存。在申请人内存的时候,系统不会首先辨别是不是充足大的并未被用于的区域,如果有,则将其分配给申请者,再行将此区域标记为“已用于”;否则分配告终。(为便利读图,从这里开始我们假设内存的地址从上往下快速增长)voidfree(void*)——获释已申请人的内存。
与malloc忽略,free的起到是把“已用于”的区域标记为“并未用于”,那么获释的内存下一次就可以再行分配过来适配。free获释的内存必需是malloc申请人的内存。由于必须对内存展开状态标记和方位记录(以便获释)。
在申请人/获释内存的时候必须额外的空间展开信息的记录。有的系统不会将记录的信息集中管理,有的则是申请人内存的时候额外地多申请人一小片区域用作记录。3、内存外泄对于动态申请人的内存,用于完之后应当送给填,才能在先前之后分配过来。
而如果申请人的内存如果没还回来,就造成了内存外泄。参照如下一段代码:现在我们设flag=1,继续执行这个函数不会再次发生什么?|足球外围app网站。
本文来源:足球外围app网站-www.supawatch.com
下一篇:返回列表
家长回来老师一起做到游戏回来老师一起学折纸家中学做到小实验 为强化新型冠状病毒病毒感染的肺炎疫情防控工作,根据教育部《关于2020年春季学期推迟开学的通报》以及上级有关放假不时习的文件精神,近日,郑州经开区实验幼儿园大力响,制订了《郑州经济技术开发区实验幼儿园2020年春季推迟开园期间工作方案》,融合园所实际情况积极开展了线上教学居多的空中课堂活动。...
2020-10-152294阅读全文 >>李隼接任孔令辉兼任女乒主教练职务 刘国梁称之为队员并未不受影响 中新社杜塞尔多夫5月30日电 (记者 王曦)在中国乒乓球协会发布了对国乒女队主教练孔令辉免职的处置要求后,谁来带上女队出征本届世乒赛沦为外界注目的焦点。...
2020-10-212544阅读全文 >>今日,华语乐坛女歌手天蝎丹带给了她的一首新的单曲《原本你没爱人过我》,天蝎丹用她圆润细致的情感与音乐极致的融合,娓娓道来的故事在悲伤中透漏出有坚毅的味道,多了伤感的气息却少有诚恳,具备不错的可听性。...
2020-09-261847阅读全文 >>2017年7月30日,开始禁令“洋垃圾”,2018年6月,国务院具体全面禁止“洋垃圾”入境,力争2020年2017年7月30日,开始禁令“洋垃圾”,2018年6月,国务院具体全面禁止“洋垃圾”入境,力争2020年年底前,基本构建固体废物零进口。...
2020-11-052652阅读全文 >>为了更佳地增进家校合作,加深学校与家庭的距离,有效地充分发挥家长特长,广阔学生视野。...
2020-12-251390阅读全文 >>8月27日中国人民保险集团公布称之为,6月5日,人健集团取得证监会发审会审查通过,随后按照长时间程序封8月27日中国人民保险集团公布称之为,6月5日,人健集团取得证监会发审会审查通过,随后按照长时间程序封卷,目前正在等候批文。...
2020-12-252224阅读全文 >>AWorks编程:嵌入式C语言的内存管理【足球外围app官方】
直线位移传感器在注塑机的应用|足球外围app官方
足球外围app官网-AI可提前一小时预测癫痫发作:准确率高达99.6%
数字引领 | 杭州高速交警首创大数据抗疲劳驾驶解决方案:足球外围app网站
足球外围app网站:用于微纳米级封装的量子点荧光微球结构
华为P40系列发布时间或敲定:继续在3月26日亮相?【足球外围app官网】