浅谈C#中堆和栈的区别(附上图解)
C#中栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小
线程堆栈:简称栈 Stack托管堆: 简称堆 Heap
使用.Net框架开发程序的时候,我们无需关心内存分配问题,因为有GC这个大管家给我们料理一切。如果我们写出如下两段代码:代码段1:
?
1
2
3
4
5
6
public int AddFive(int pValue)
{
int result;
result = pValue + 5;
return result;
}
代码段2:
?
1
2
3
4
5
6
7
8
9
10
11
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)(简称堆)有个清
原创力文档

文档评论(0)