本帖最后由 rla540 于 2012-12-19 00:31 编辑
当调用一个函数时就会在栈中为这个函数开辟空间,用来存放参数,局部变量,函数返回地址等信息,当函数退出时这些空间就会由系统自动收回。栈空间的数据是从高地址向低地址依次存放数据的,所以空间是连续的!不会产生碎片
栈空间一般都是存放体积比较小得数据。当需要一些大数据时,一般都是放在堆空间中的,只需要在栈空间中存放这个堆空间的地址(4字节大小)就可以对堆空间中庞大的数据进行操控了!堆数据的释放C#中是垃圾回收器进行处理得!实现应该是比较复杂的!堆空间数据的生命周期也相对较长一些!搞这么多空间无非是方便数据有效率的调用和能更好地满足不同数据的处理。当然内存中除了这两个区域外还有其它的区域。像方法区,也叫代码区,所有函数实现都在这个区域存储,这里的数据用来控制CPU的执行。还有静态存储区,一般全局变量和静态变量会放在这个区域。各种硬件也会占用一些内存空间。系统也占用了大半空间。所以如果你电脑有4G内存的话,可用得内存空间也就不到4G了 |