<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title=".NET中栈和堆的比较(2)" id="card1">
<p> 游客</p><p>
标题:.NET中栈和堆的比较(2)<br/>
正文:<br/>
   原文出处：http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory2B01142006125918PM/csharp_memory2B.aspx尽管在.NET framework下我们并不需要担心内存管理和垃圾回收(Garbage Collection)，但是我们还是应该了解它们，以优化我们的应用程序。同时，还需要具备一些基础的内存管理工作机制的知识，这样能够有助于解释我们日常程序编写中的变量的行为。在本文中我将讲解我们必须要注意的方法传参的行为。在第一部分里我介绍了栈和堆的基本功能，还介绍到了在程序执行时值类型和引用类型是如何分配的，而且还谈到了指针。* 参数，大问题这里有一个代码执行时的详细介绍，我们将深入第一部分出现的方法调用过程...当我们调用一个方法时，会发生以下的事情：1.方法执行时，首先在栈上为对象实例中的方法分配空间，然后将方法拷贝到栈上（此时的栈被称为帧），但是该空间中只存放了执行方法的指令，并没有方法内的数据项。3.方法参数的分配和拷贝是需要空间的，这一点是我们需要进一步注意。 示例代码如下:public int AddFive(int pValue){       int result;       result = pValue + 5;       return result;}此时栈开起来是这样的:就像第一部分讨论的那样，放在栈上的参数是如何被处理的，需要看看它是值类型还是引用类型。值类型的值将被拷贝到栈上，而引用类型的引用（或者说指针）将被拷贝到栈上。 * 值类型传递首先，当我们传递一个值类型参数时，栈上被分配好一个新的空间，然后该参数的值被拷贝到此空间中。来看下面的方法：     class Class1     {public void Go(){     int x = 5;   &amp;<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=308&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=308&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=308&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=308&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=308&amp;Page=6">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=308">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=308">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>