【问题标题】:How to increase stack size when compiling a C++ program using MinGW compiler使用 MinGW 编译器编译 C++ 程序时如何增加堆栈大小
【发布时间】:2019-07-16 05:06:49
【问题描述】:

我正在尝试编译提供给我的程序。当提供不同的值时,程序会测试算法快速排序的运行时间。我需要增加堆栈的大小才能运行非常大的数字。

我阅读使用以下命令:g++ -Wl,--stack,<size>

其中 size 是增加堆栈的数量。

但是,这对我不起作用。当我输入以下内容时,在命令提示符中:

g++ -Wl,--stack,1000000000

然后按回车,我收到以下消息:

C:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../libmingw32.a(main.o):(.text.startup+0xa0): 未定义对“WinMain@16”collect2.exe 的引用:错误:ld 返回 1 退出状态

我不允许更改代码,所以我唯一的选择是在命令提示符下增加堆栈大小,然后运行我的代码。

我不知道我做错了什么。我输入的命令有误吗?

如何在使用 MinGW 编译器的 c++ 程序的命令提示符中增加堆栈大小?如果该信息有帮助,我正在使用 Windows 10。

【问题讨论】:

  • 它是否适用于较小的堆栈大小值?
  • 是的,它适用于像 10,000 这样的小值。如果我尝试 1,000,000 它根本行不通。我没有收到错误消息或任何东西,程序刚刚结束。
  • 这对我没有帮助。我没有能力更改代码。我不允许更改代码。它不是我的代码,它是我的教授代码,他严格说不要更改代码。我只需要增加我的堆栈大小。好吧,1GB 太高了,我不打算让堆栈那么高。老实说,我不知道该放什么数字。
  • 我只能建议你继续将堆栈大小减半,直到找到一个可以生成工作 exe 的值,然后查看它是否在没有耗尽堆栈空间的情况下运行。
  • 我能弄明白。我在下面发布了答案,以防其他人有同样的问题。

标签: c++ compiler-errors mingw stack-overflow


【解决方案1】:

为了改变堆栈的大小以运行可能导致堆栈溢出的 C++ 程序,请使用以下命令。

g++ -Wl,--stack,16777216 -o file.exe file.cpp

这会将堆栈大小增加到 16MiB,如果您需要更大,则将值从 16777216 字节增加到您需要的任何值。

请务必将file.exefile.cpp 替换为您正在运行的文件和可执行文件的相应名称。

还要注意命令中的-Wl(小写L)

【讨论】:

    【解决方案2】:
    g++ -Wl,--stack,1000000000 -o main.exe main.cpp
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2011-04-03
    • 2013-09-25
    • 2011-01-17
    • 1970-01-01
    • 2010-10-15
    • 2013-03-26
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多