Wil*_*iam 7 stack gcc exe mingw stack-size
看来我的程序(用 mingw 构建g++)由于堆栈内存不足而崩溃。我使用编译选项-Wl,--stack,64000000来增加堆栈限制,但问题仍然存在。我想知道是否有实用程序或方法来检查程序的当前堆栈限制.exe,以便我可以验证限制确实已更改为该值。
小智 8
根据这个答案,要检查堆栈大小,您需要安装 Visual Studio 并使用 Visual Studio 工具dumpbin。通常有一个脚本可以运行来打开命令提示符窗口,其中包含路径中的所有 Visual Studio 工具,这是 vcvarsall.bat 或从开始菜单中的“x64 Native Tools Command Prompt for VS 2019”(或类似的东西) 。
跑步
dumpbin /headers executable.exe
Run Code Online (Sandbox Code Playgroud)
这将返回一个长输出。在该输出中,查找OPTIONAL HEADER VALUES并在该部分中,将有一个size of stack reserve. 默认堆栈大小写为100000(十六进制),即 1 MB。
editbin您可以使用 Visual Studio 提供的来更改可执行文件的堆栈大小:
editbin /stack:N executable.exe
Run Code Online (Sandbox Code Playgroud)
这里 N 是堆栈大小的字节数(十进制) 。