浅谈C#中堆和栈的区别(附上图解)资料.docx

浅谈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)

1亿VIP精品文档

相关文档