奥礼网
新记
怎样理解c#中的堆和栈?
如题所述
举报该文章
相关建议 2011-03-04
简单的可以理解为:
heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。
stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。
一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
温馨提示:内容为网友见解,仅供参考
当前网址:
https://aolonic.com/aa/1k1aggag1.html
其他看法
第1个回答 2011-03-03
打一个简单的比方,“栈”就是去饭馆吃饭,只要你点了菜,后面的厨师会为你做饭,服务员给你上菜,然后吃完饭你直接走就行了,剩饭垃圾交给饭馆来处理。
而“堆”是你自己在家做饭,由你决定吃什么,然后自己去买菜,做饭,吃完饭后自己收拾剩下的东西,该仍的就扔到垃圾桶里。一个通俗的比喻,应该能讲明白堆和栈的内存的分配以及回收机制了吧。
相似回答
大家正在搜
相关问题
如何理解JAVA堆栈
C#中栈和堆怎么定义
关于C#堆与栈区别
C#中的堆和栈分别是什么意思?
C#堆和堆栈有什么区别
C#中堆和堆栈有什么不一样?
请解释一下在c#中堆和栈,它们分别有哪些作用
用C#实现堆和栈