[原创]C#中的堆和栈理解
引言:程序运行时,它的数据必须存在内存中,一个数据需要多大内存、存储在什么地方以及如何存储都依赖于该数据的数据类型。
1、什么是栈
栈是一个内存数组,是一个LIFO(Last-In-First-Out 后进先出)的数据结构。
栈主要存储如下几种数据:
a、某些类型变量的值。
b、程序当前的执行环境。
c、传递给方法的参数
栈的特征:
1、数据只能从栈的顶端插入和删除
2、把数据放到栈顶称为入栈(push)
3、从栈顶删除数据称为出栈(pop)
什么叫堆?
堆是一块内存区域,在堆里面可以分配较大块的内存用来存储某种数据类型的数据对象,和栈不同是的,堆里面的内存可以按照任何顺序进行存入和移除。
注意:虽然程序可以在堆里面保存数据,但是不能显式的删除它们。CLR的GC(垃圾收集器)在判断出程序的代码将不会再访问某数据项的时候,会自动清楚无主的堆对象(托管对象)。
个人公众号:阅读原文
作者:天使不哭
微信号:hgmyzhl
微信公众号:小明互联网技术分享社区
CSDN:IT技术分享社区
知乎:IT技术分享社区
出处:小明互联网技术分享社区
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.