首页 置换 选车 估价 问答 生活 经销商 车管所 汽车资讯 汽车销量 车牌查询 今日油价 天气预报
您的位置: 首页 > 生活 > 生活 > c语言中栈和堆的区别(C之堆与栈)
c语言中栈和堆的区别(C之堆与栈)
更新时间:2024-07-08 14:00:54

c语言中栈和堆的区别?堆与栈,我来为大家科普一下关于c语言中栈和堆的区别?以下内容希望对你有帮助!

c语言中栈和堆的区别(C之堆与栈)1

c语言中栈和堆的区别

堆与栈

堆与栈都是内存空间的一部分,堆分为托管堆和非托管堆,托管堆由CLR管理,对非托管堆的管理则由开发者完成。

托管堆是运行程序时,CLR申请的一块内存空间。

当创建新对象时,如果对象是引用类型或者包括引用类型的值类型,就会在GC堆上申请空闲的内存空间,CLR先计算需要的空间大小,如果堆上没有剩余空间了,就触发一次垃圾回收,如果回收后仍旧没有足够的内存空间,就抛出OutOfMemory异常。

为了合理利用空间,GC堆内存分配是连续的,垃圾回收结束,部分空间被释放,会有内存碎片,此时进行压缩,将内存重新变为连续状态。

非托管资源占用另一部分的内存,叫做本地堆或者非托管堆。CLR不负责这一块的垃圾回收,常见的非托管资源有文件流、数据库连接、打印机资源等。

是一个先进后出的栈数据结构,所以一直是连续的。栈中的对象离开了定义域就会自动销毁,所以栈一般空间是够用的。爆栈也有例子,比如一个没有出口的递归,此时所有的变量都还在它们的定义域中。

对于引用类型,也会使用栈,但栈只是存储一个地址,即引用,就是它在堆上的内存地址,通过访问栈上的地址就可以间接访问到堆上的引用类型对象以及他们的值。

由于栈只能从顶部放入或者拿走数据,所以内存总是连续的,不需要进行GC。

,
相关推荐RECOMMEND
安康杯优胜单位事迹简介(山西省表彰安康杯)
安康杯优胜单位事迹简介?本报讯(记者尚慧辉)2018年12月21日,省总工会与省应急管理厅联合召开山西省2017—2018年度“安康杯”竞赛总结表彰暨经验交流会议,总结过去两年“安康杯”竞赛活动经验,...
单位性质怎么填(单位性质分类)
单位性质怎么填?单位性质的填写要依据单位的现有性质来填写,单位性质是指机关、团体、法人、企业等非自然人的实体或其下属部门的性质,是用来区分工薪阶层上班的地方的类别关系,我来为大家讲解一下关于单位性质怎...
可以用煤气罐自制烧烤炉吗(烧烤去自己动手)
深春初夏,恼人的杨柳絮子已经退去,正是野营烧烤的好时候。支上烤炉,掏出自制的引火罐,环保、便携,生火变得干净从容,分分钟搞定,霸气侧漏了吧。来来来,我们现在开始着手准备。Step1找一个空的铁罐,圆扁...
如何判断食物中毒(判断食物中毒方法)
如何判断食物中毒?有毒食物接触史,食物中毒都是由于食用了有毒的食品以后导致的中毒食物中毒患者都有明确的某种可疑有毒食物的接触史可以对所剩余的可疑有毒食品进行检验来确定其是否有毒性,我来为大家科普一下关...
可乐鸡翅怎样做不那么甜(可乐鸡翅咸甜适口)
可乐鸡翅是一道经典的美食,色泽诱人,香甜可口,非常下饭。做法超级简单,一学就会系列!收藏本菜谱可乐鸡翅图文|薄荷糖的味道鸡翅18个可乐1小瓶生姜适量料酒30g葱段适量生抽少许老抽适量1.鸡翅冷水下锅焯...
黄精加什么生精补肾(黄精-男固精气)
黄精肉是一味非常常用的抗衰老、养生与美容食材,就黄精肉的有关作用进行了分析。黄精素通过作用于上焦以滋补肺阴,作用于中焦以健脾益气,作用于下焦以补肾益精等综合作用,达到抗衰老、养生与养颜的效果。切入了解...