查看完整版本: [-- C#中堆和栈的区别分析 --]

-> 评论 -> C#中堆和栈的区别分析 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

红黑网友(游客) 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

红黑网友(游客) 2015-01-13 10:44
非常感激,对我很有用


查看完整版本: [-- C#中堆和栈的区别分析 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip enabled