堆栈能使用的大小在PE头中定义。
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。
为保险起见,需要自己安装SEH handler,避免因扩展堆栈出错导致程序崩溃,以下:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有