堆栈段

堆栈段（stack segment）通常是指采用堆栈方式工作的一段内存区域。当程序被执行时，程序可能会将其执行的状态加入栈的顶部；当程序结束时，它必须把栈顶的状态数据弹出（pop）。

在采用段式内存管理方式进行程序内存分配的架构中，堆栈段用来存放局部变量和函数返回地址。堆栈段是在程序运行时动态分配使用，只需要通过栈顶指针即可访问。目前大多数CPU中都有专用寄存器可以被用来存放栈顶地址。

理论上，最小的栈可能是一个仅能保存函数调用（function call）地址的结构，以致被调用的函数能根据该地址返回（return）到原函数里。除此功能以外，开发者也可以将栈另作他用。

基于栈的内存分配法的另一特点就是，当程序结束时，栈所用的内存能够自动快速地被回收，开发者不用干预，省心省力。如果栈顶的数据需要以某种格式被保存起来，那么在程序结束前，此数据必须被复制到其他位置，不然就会被弹出栈而丢失。因此，基于栈的内存分配法适用于那些只需暂时数据的保存情况。

操作系统给线程分配的栈可能仅为几个KB的大小。如果分配的栈内存过大，超过了线程实际需要，这可能导致栈溢出（stack overflow），以致系统崩溃。

x86处理器系列对线程栈的管理有特殊的指令。其他处理器系列（包括PowerPC和MIP）则没有这种支持。

 参见 

数据段
代码段
动态内存分配
段式管理

Category:記憶體管理