title: 物理上堆内存和栈内存有区别吗？
desc: 物理上堆内存和栈内存有区别吗，这个是否只是操作系统抽象的？
topic: 内存管理
content: 多数情况下，堆应该算是操作系统抽象的而栈由CPU直接提供支持（但操作系统可以决定应用程序栈大小的上限）。从硬件上说，堆和栈最终都是内存条上的若干存储单元，所以并没有什么不同。但，由于很多CPU对压栈出栈操作有硬件（指令）上的支持，所以在栈区分配归还内存速度极快（相比之下，堆上分配简直是龟速）尤其是函数内部的局部变量，可以轻易与函数调用返回绑定，因此几乎所有编译型语言都会在利用栈管理局部变量（