读书人

堆和栈哪位高手能详细解答一下具体含义

发布时间: 2012-03-06 20:47:55 作者: rapoo

堆和栈谁能详细解答一下具体含义呢
堆和栈有什么区别 他们都是内存空间吗 谁能详细说下 还有入栈出栈顺序 谢谢

[解决办法]
在.net中。堆和栈是这样的。

值类型的对象都是存储在栈上。而这个栈是在内存中分配的,速度比较快。用来保存临时的变量或者函数的参数。栈是先入后出的,即后入栈的对象先出栈。
如函数 void Test(string tt,int i) {} ;在调用函数时,比如:Test("str",19);先复制函数的参数"str"和19,生成一个副本,先把"str"入栈,再把19入栈。在函数返回时,即return;,这时候先把19出栈,再把"str"出栈。

堆,在.NET中叫做托管堆。意思是受CLR托管的对象。堆也是内存的控件,但是它的大小可以覆盖整个内存和虚拟内存,但是它的速度相对 栈 来说比较慢。引用类型的对象的数据都是保存在 托管堆 上的。注意,引用类型的对象是保存在 栈 上的,但是它指向的数据 保存在 托管堆 里面。

不知道这样说你明白了没。。。
[解决办法]
是程的私有空,各自的程都不能意其它程的私有空,除非特理,值型的存空都是存在中的.的存地址是大到小的分配,的行速度要快,但其空大小有限.
堆是程地址空中的一存域,所有同一程下的程都可以存域,它用於分配引用型例.完全由垃圾收集器控制.引用型的存空都是在堆中.它除了存中的要存的行.托管堆完全由.net垃圾回收器控制.它理速度要比慢,但它的空相大得多

读书人网 >.NET

热点推荐