fbpx
维基百科

堆栈段

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

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

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

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

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

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

参见 编辑

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

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。