红黑网友(游客) |
2015-01-13 10:44 |
C#中堆和栈的区别分析
线程堆栈:简称栈 Stack 托管堆: 简称堆 Heap
使用.Net框架开发程序的时候,我们无需关心内存分配问题,因为有GC这个大管家给我们料理一切。如果我们写出如下两段代码: 代码段1:
public int AddFive(int pValue) { int result; result = pValue + 5; return result; }
代码段2:
public class MyInt { public int MyValue; }
public MyInt AddFive(int pValue) { MyInt result = new MyInt(); result.MyValue = pValue + 5; return result; }
问题1:你知道代码段1在执行的时候,pValue和result在内存中是如何存放,生命周期又如何?代码段2呢? 要想释疑以上问题,我们就应该对.Net下的栈(Stack)和托管堆(Heap)(简称堆)有个清楚认识,本立而道生。如果你想提高程序性能,理解栈和堆,必须的! 本文就从栈和堆,类型变量展开,对我们写的程序进行庖丁解牛。 C#程序在CLR上运行的时候,内存从逻辑上划分两大块:栈,堆。这俩基本元素组成我们C#程序的运行环境。
一,栈 vs 堆:区别?
栈通常保存着我们代码执行的步骤,如在代码段1中 AddFive()方法,int pValue变量,int result变量等等。而堆 阅读全文地址:/kf/201109/103302.html |
|