C和C ++程序中堆栈溢出的常见原因是什么?

时间:2013-05-22 11:14:49

标签: c++ c

我正在尝试更多地了解堆栈溢出,我不断获得它的描述,但我想了解它的原因,希望你能帮忙

2 个答案:

答案 0 :(得分:3)

在堆栈上声明一个包含太多元素的数组也可以这样做:

int tmp[999999999];
...

答案 1 :(得分:0)

一个例子是递归。 C ++没有尾调用优化,因此有时在函数式语言中运行良好的算法(如Erlang或Haskell)可能会导致C ++中的堆栈溢出。

UPD。尽管标准不能保证,但大多数现代编译器实现似乎都支持TCO。好吧,你只需要声明其中的任何局部变量,你仍然可以通过足够深的递归函数来达到堆栈溢出。