如何在C++中增加堆栈大小?

3

当我为100000个输入数组编译我的代码时,不会出现任何错误。然而,当我增加输入量到500000时,它会因堆栈溢出而出现错误。我需要增加堆栈大小。怎么做呢?


4
不要使用std::vector - molbdnilo
使用动态分配或std::vector。 - KIIV
@KIIV:动态分配或者std::vector会在堆上分配内存,而不是栈上。 - Abhineet
1
@Abhineet,这就是评论的全部意义。我明白,如果他需要更大的堆栈来进行某种递归,但对于静态数组呢? - KIIV
显示剩余2条评论
2个回答

2
不要依赖于自动存储期的大型数组。C++标准没有规定这种数组的大小限制,但大多数实现与您可以使用替代方法分配的内存量相比具有惊人的小限制。
在您的情况下,一个元素类型为T的std::vector是适当的。

1
这个答案https://dev59.com/nIXca4cB1Zd3GeqPECWO#26907700提出了另一种解决方案,我认为值得一看,因为OP似乎知道它的数组大小。 - cmourglia

0
回答这个问题的方法是查看您编译器的文档。通常有一个设置最大堆栈大小的选项。默认值通常很小,因为良好结构化的程序具有类似树状的调用结构,因此堆栈随着程序大小和复杂性呈对数增长。对于普通程序,您不需要太多的堆栈。
正如其他人所说,真正的答案可能是将数据从堆栈移动到堆中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接