堆栈扩展至最大

堆栈能使用的大小在PE头中定义。code

s:=GetExePath;
  sk:='SizeOfStackReserve';
  simath.queryPEInfo(s,sk,i);
  sk:='SizeOfStackCommit';
  simath.queryPEInfo(s,sk,j);
  if j=0 then
    j:=4*1024; //默认4K
  SizeOfStackReserve:=i-$4000;//通过实践,必须得-16K,不然溢出 //i-j;也不是这个//实际上能扩展的就这么多,不然就会c00000fd stack_overflow

不知道什么缘由,能扩展出的:栈顶 - 栈底 = sizeofStackReserve-16K(即:$4000),超出继续push就会致使stack_overflow。it

为保险起见,须要本身安装SEH handler,避免因扩展堆栈出错致使程序崩溃,如下:class

相关文章
相关标签/搜索