Stack(栈)和Heap(堆)的区别

来源:互联网 发布:大麦盒子怎么设置网络 编辑:程序博客网 时间:2024/06/10 20:46

 Stack 和 Heap在程序运行时均可用来存放对象,均存在于RAM中,那么二者有什么区别呢?

Stack:

    1. 处理器经由指针(stack pointer)提供直接支持。当程序分配一块新的内存时,stack指针变往后移;释放内存时,指针往前移回。

    2.效率高,速度仅次于寄存器。

Heap:

    1. 编译器不需要知道究竟得从heap中分配多少空间,也不需知道从heap上分配的空间究竟需要存在多久。因此,自heap分配存储空间可以获得高度的弹性。每当你需要产生对象,只需在程序代码中new一下,当它在执行的时候,便会自heap分配空间。

    2. 效率低,耗时长。