堆棧擴展至最大

堆棧能使用的大小在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

相關文章
相關標籤/搜索