深入C#内存管理来分析 值类型、引用类型、装箱、拆箱、堆栈几个概念组合
在C/C++中:
Stack叫做栈区,由编译器自动分配释放,存放函数的参数值,局部变量的值等。
Heap则称之为堆区,由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。
而在C#中:
Stack是指堆栈,Heap是指托管堆,不同语言叫法不同,概念稍有差别。(此处若有错误,请指正)。
这里最需要搞清楚的是在语言中stack与heap指的是内存中的某一个区域,区别于数据结构中的栈(后进先出的线性表),堆(经过某种排序的二叉树)。
讲一个概念之前,首先要说明它所处的背景。
若无特别说明,这篇文章讲的堆栈指的就是Stack,托管堆指的就是Heap。