当我编译100000输入数组的代码时,它不会给出任何错误。但是,当我将输入增加到500000时,会出现堆栈溢出错误。我需要增加堆栈大小。我该怎么办?
答案 0 :(得分:2)
不要依赖具有自动存储持续时间的大型阵列。 C ++标准并未强制限制此类数组的大小,但与使用其他方法分配的内存量相比,大多数实现的限制都非常小。
在您的情况下,std::vector<T>
T
是元素类型,是合适的。
答案 1 :(得分:0)
问题的答案是检查编译器的文档。通常可以选择设置最大堆栈大小。默认值通常非常小,因为结构良好的程序具有树状调用结构,因此堆栈采用对数方式随程序大小和复杂性增长。对于普通程序,您不需要太多堆栈。
然而,正如其他人所说,真正的答案可能是将数据从堆栈移到堆上。