1

在许多动态规划和图问题中,需要进行长深度递归。

我目前在 Windows 中为我的 c++ 程序使用vscodemingw 。但在默认情况下,据我所知,windows 的最大堆栈大小为 1MB。所以我遇到了分段错误/stackoverflow问题。我很清楚我可以改变循环中的每个递归,但我不想要那些东西。

在像Google Hashcode、Facebook Hackercup这样的编程竞赛中,他们提供了大量输入,如果我在我的机器上运行该输入,它就会面临分段错误/stackoverflow问题。

现在我需要增加最大堆栈大小

我找到了一些方法,这是我的问题。

  1. g++ -O2 -std=c++11 -Wall -Wl,--stack=268435456 Untitled1.cpp -o a.exe当我在 Windows 命令提示符中使用此命令时,它工作得很好。但是它在 vscode 终端中给出了错误(我不知道为什么。)我在这里找到了这个命令。 在此处输入图像描述

  2. 我在某个地方找到#pragma comment(linker, "/STACK:2000000")了,但我没有清楚地理解这一点。

  3. 无论如何在vscode中更改一次最大堆栈大小,这样我就不需要每次编译时都指定?

我只想增加最大堆栈大小,

4

1 回答 1

2

VSCode 使用 powershell 作为其 shell,逗号是 powershell 的特殊字符。您需要将它们放在引号内。

g++ -O2 -std=c++11 -Wall "-Wl,--stack=268435456" Untitled1.cpp -o a.exe

应该管用。

于 2020-07-29T12:55:04.297 回答