大家好好的解释一下堆和栈以及堆和栈的区别
还有:
void fun(int a){} a存储在堆还是在栈里面,如果在c#中 public void Fun(ReferenceType type){} 那么引用类型的type存储在堆里面还是在栈里面大家好好说说,
还有:
void fun(int a){} a存储在堆还是在栈里面,如果在c#中 public void Fun(ReferenceType type){} 那么引用类型的type存储在堆里面还是在栈里面大家好好说说,
调试欢乐多
public void Fun(ReferenceType type){} 那么引用类型的type存储在栈里面局部变量都储存在栈里面
这个type会在堆上建立一个新的同样内容的区域,而栈上也会相应地创建一块内容指向
不会修改原来的变量
除非使用ref或out关键字
堆区:般由程序员分配(如new)释放,若程序员不释放,程序结束时可能由OS回收 。
1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。堆和栈的区别可以用如下的比喻来看出:使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。