首页 > 代码库 > 栈和堆
栈和堆
当声明值类型时,内存会在栈(先进后出)上分配相应的空间,栈会在负责跟踪应用程序的过程中判断是否有运行内存需要。当声明引用类型时,.NET会在栈中创建一个指针,而实际的对象将会存储到一个叫做“堆”的内存区域中。“堆”不会追踪运行内存,它只是能够被随时访问到的一堆对象而已。不同于栈(用于静态内存的分配),堆用于动态内存的分配。
当执行控制语句开始离开方法体,这时所有在栈上为变量所分配的内存空间都会被清除。换句话说,在上面的示例中所有与int类型相关的变量将会按照“LIFO”后进先出的方式从栈中一个一个地出栈。堆中的内存块将会由垃圾回收器稍候进行清理。
基元数据类型并不复杂,他们仅仅保存像 ‘int i = 0
’这样的值。对象数据类型就复杂了,他们引用其他对象或其他基元数据类型。换句话说,他们保存其他多个值的引用并且这些值必须一一地存储在内存中。对象类型需要的是动态内存而基元类型需要静态内存。如果需求是动态内存的话,那么它将会在堆上为其分配内存,相反,则会在栈上为其分配。
栈和堆
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。