栈总结篇

今天想总结一下栈的知识。
栈是和线程关联的,每个线程会有一个栈。默认情况下,应用程序的栈是1MB,kernel程序的的栈是256KB。
在设置栈的时候有两个参数(/STACK: reserve[, commit])
其中 reserve是栈的最大容量,但线程刚启动的时候,栈并没有那么大,随着需要增长。 commit是增长的一个步进。
在ring3中,线程相关的信息存储在_TEB块里,位于fs段中。_TEB的最前面是_NT_TIB块。
ntdll!_NT_TIB
   +0x000 ExceptionList    : Ptr32 _EXCEPTION_REGISTRATION_RECORD
   +0x004 StackBase        : Ptr32 Void 栈顶部地址
   +0x008 StackLimit       : Ptr32 Void  栈大小
   +0x00c SubSystemTib     : Ptr32 Void
   +0x010 FiberData        : Ptr32 Void
   +0x010 Version          : Uint4B
   +0x014 ArbitraryUserPointer : Ptr32 Void
   +0x018 Self             : Ptr32 _NT_TIB

pe%E6%96%87%E4%BB%B6%E5%AD%A6%E4%B9%A0.JPG

pixy.gif?x-id=0b8fe99e-00c2-4e33-9c12-4fb259e9adf8

转载于:https://www.cnblogs.com/fanzi2009/archive/2009/03/26/1422484.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值