堆栈段 堆栈段stack segment通常是指采用堆栈方式工作的一段内存区域当程序被执行时程序可能会将其执行的状态加入栈的顶部当程序结束时它必须把栈顶的状态数据弹出pop 在采用段式内存管理方式进行程序内存分配的架构中堆栈段用来存放局部变量和函数返回地址堆栈段是在程序运行时动态分配使用只需要通过栈顶指针即可访问目前大多数CPU中都有专用寄存器可以被用来存放栈顶地址 理论上最小的栈可能是一个仅能保存函数调用function call地址的结构以致被调用的函数能根据该地址返回return到原函数里除此功能以外开发者也可以将栈另作他用 基于栈的内存分配法的另一特点就是当程序结束时栈所用的内存能够自动快速地被回收开发者不用干预省心省力如果栈顶的数据需要以某种格式被保存起来那么在程序结束前此数据必须被复制到其他位置不然就会被弹出栈而丢失因此基于栈的内存分配法适用于那些只需暂时数据的保存情况 操作系统给线程分配的栈可能仅为几个KB的大小如果分配的栈内存过大超过了线程实际需要这可能导致栈溢出stack overflow以致系统崩溃 x处理器系列对线程栈的管理有特殊的指令其他处理器系列包括PowerPC和MIP则没有这种支持