C#中的堆和栈
什么是栈?什么是堆?
什么是值类型?什么是引用类型?
值类型中的引用类型,引用类型中的值类型。
栈(stack)
概念:内存中连续存放的区域,空间小,速度快,存取按先进后出(FILO First In Last Out)
比如一叠盘子,存:一个个的堆叠,取:从上取
值类型
概念:继承于System.ValueType,它是System.Object的子类一般存放于栈中
主要值类型
准确的说值类型的存放与定义的区域有关,在值类型(struct)中定义的引用类型是存放在堆中的,即值类型中的引用类型。
堆(Heap)
概念:空间大,速度慢,不连续存放,容易形成碎片,主要存放引用类型的真实值,托管堆的内存由GC回收
引用类型
概念:继承于System.Object,存放于堆上。
主要引用类型
在引用类型中的值类型,如类中的int字段,是存放在堆中的