2

g++由于堆栈内存不足,我的程序(使用 mingw 构建)似乎崩溃了。我使用编译选项-Wl,--stack,64000000来增加堆栈限制,但问题仍然存在。我想知道是否有实用程序或方法来检查我的.exe程序的当前堆栈限制,以便我可以验证限制确实更改为该值。

4

1 回答 1

3

根据这个答案,要检查堆栈大小,您需要安装 Visual Studio 并使用 Visual Studio 工具dumpbin。通常有一个脚本可以运行,以在路径中显示带有所有 Visual Studio 工具的命令提示符窗口,这是开始菜单中的 vcvarsall.bat 或“x64 Native Tools Command Prompt for VS 2019”(或类似的东西) .

dumpbin /headers executable.exe

这将返回一个长输出。在该输出中,查找OPTIONAL HEADER VALUES并在该部分中,将有一个size of stack reserve. 默认堆栈大小写为100000(字节),即 1 兆字节。

editbin您可以使用Visual Studio 也提供的更改可执行文件的堆栈大小:

editbin /stack:N executable.exe

这里 N 是堆栈大小的字节数。

于 2021-04-23T20:17:00.420 回答