C#中的堆栈和堆的区别与联系

堆栈和堆得区别:

使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。
使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。

堆和堆栈的垃圾回收:

堆栈不存在垃圾回收的问题, 直接压栈就可以了。

堆的话,需要复杂的垃圾回收机制。

垃圾回收是对堆来进行操作,堆中的对象是否有效, 是通过遍历堆栈来获取的, 就是一个引用计数的问题。

一个引用类型的实例化过程:

Class a = new Class();

1) Class a 的时候, 生成一个空的引用指针,并把他压栈到堆栈中。

2)new Class() 生成一个类的实例, 并且在堆上分配对应内存。

3 ) = 赋值的时候, a的引用指向新生成的实例。

posted @ 2011-09-02 07:42  残雪狂舞  阅读(180)  评论(0编辑  收藏  举报