怎样理解c#中的堆和栈?

 我来答
ctqcbd
2011-03-04 · TA获得超过683个赞
知道答主
回答量:480
采纳率:0%
帮助的人:283万
展开全部
简单的可以理解为:
heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。
stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。

一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
jsjlyf
2011-03-03 · TA获得超过1939个赞
知道小有建树答主
回答量:1076
采纳率:0%
帮助的人:1219万
展开全部
打一个简单的比方,“栈”就是去饭馆吃饭,只要你点了菜,后面的厨师会为你做饭,服务员给你上菜,然后吃完饭你直接走就行了,剩饭垃圾交给饭馆来处理。
而“堆”是你自己在家做饭,由你决定吃什么,然后自己去买菜,做饭,吃完饭后自己收拾剩下的东西,该仍的就扔到垃圾桶里。一个通俗的比喻,应该能讲明白堆和栈的内存的分配以及回收机制了吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式