我正在尝试更多地了解堆栈溢出,我不断获得它的描述,但我想了解它的原因,希望你能帮忙
答案 0 :(得分:3)
在堆栈上声明一个包含太多元素的数组也可以这样做:
int tmp[999999999];
...
答案 1 :(得分:0)
一个例子是递归。 C ++没有尾调用优化,因此有时在函数式语言中运行良好的算法(如Erlang或Haskell)可能会导致C ++中的堆栈溢出。
UPD。尽管标准不能保证,但大多数现代编译器实现似乎都支持TCO。好吧,你只需要声明其中的任何局部变量,你仍然可以通过足够深的递归函数来达到堆栈溢出。