我的程序(使用 mingw g++
构建)似乎由于堆栈内存不足而崩溃。我使用编译选项 -Wl,--stack,64000000
来增加堆栈限制,但问题仍然存在。我想知道是否有实用程序或方法来检查我的 .exe
程序的当前堆栈限制,以便我可以验证该限制确实已更改为该值。
最佳答案
从这里answer , 要检查堆栈大小,您需要安装 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 兆字节。
您可以使用同样由 Visual Studio 提供的 editbin
更改可执行文件的堆栈大小:
editbin /stack:N executable.exe
这里 N 是堆栈大小的字节数。
关于gcc - 如何知道.exe程序的堆栈大小限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55901513/