C#中的堆和栈理解

引言:程序运行时,它的数据必须存在内存中,一个数据需要多大内存、存储在什么地方以及如何存储都依赖于该数据的数据类型。

1、什么是栈

栈是一个内存数组,是一个LIFO(Last-In-First-Out 后进先出)的数据结构。

栈主要存储如下几种数据:

a、某些类型变量的值。

b、程序当前的执行环境。

c、传递给方法的参数

栈的特征:

1、数据只能从栈的顶端插入和删除

2、把数据放到栈顶称为入栈(push)

3、从栈顶删除数据称为出栈(pop)


什么叫堆?

堆是一块内存区域,在堆里面可以分配较大块的内存用来存储某种数据类型的数据对象,和栈不同是的,堆里面的内存可以按照任何顺序进行存入和移除。


注意:虽然程序可以在堆里面保存数据,但是不能显式的删除它们。CLR的GC(垃圾收集器)在判断出程序的代码将不会再访问某数据项的时候,会自动清楚无主的堆对象(托管对象)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,366评论 11 349
  • “text segment ”是应用程序运行时应用程序代码存在的内存段。每一个指令,每一个单个函数、过程、方法和执...
    紫云夕月阅读 7,342评论 4 20
  • 喜欢的话记得点赞 一、内存管理:移动设备的内存及其有限,每一个APP所能占用的内存是有限制的二、什么行为会增加AP...
    茉上心弦阅读 2,038评论 1 12
  • Hello.everyone.my name is cuiyuwei.I come from Hebei prov...
    灸灸微笑阅读 53评论 0 0
  • 最近几天作息颠倒了 一时半会儿转不过来 然后每天都有至少两小时躺在床上翻来覆去睡不着 他因为工作每半个月就要倒一次...
    眻纺纺阅读 386评论 0 1