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