码迷,mamicode.com
首页 > 其他好文 > 详细

栈和堆

时间:2014-09-01 17:29:13      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:blog   http   数据   2014   log   sp   c   .net   应用   

      当声明值类型时,内存会在栈(先进后出)上分配相应的空间,栈会在负责跟踪应用程序的过程中判断是否有运行内存需要。当声明引用类型时,.NET会在栈中创建一个指针,而实际的对象将会存储到一个叫做“堆”的内存区域中。“堆”不会追踪运行内存,它只是能够被随时访问到的一堆对象而已。不同于栈(用于静态内存的分配),堆用于动态内存的分配。

     当执行控制语句开始离开方法体,这时所有在栈上为变量所分配的内存空间都会被清除。换句话说,在上面的示例中所有与int类型相关的变量将会按照“LIFO”后进先出的方式从栈中一个一个地出栈。堆中的内存块将会由垃圾回收器稍候进行清理。

     基元数据类型并不复杂,他们仅仅保存像 ‘int i = 0’这样的值。对象数据类型就复杂了,他们引用其他对象或其他基元数据类型。换句话说,他们保存其他多个值的引用并且这些值必须一一地存储在内存中。对象类型需要的是动态内存而基元类型需要静态内存。如果需求是动态内存的话,那么它将会在堆上为其分配内存,相反,则会在栈上为其分配。

bubuko.com,布布扣

栈和堆

标签:blog   http   数据   2014   log   sp   c   .net   应用   

原文地址:http://www.cnblogs.com/lizhen24/p/3949414.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!