【发布时间】:2013-05-22 11:14:49
【问题描述】:
我正在尝试更多地了解堆栈溢出,我不断得到关于它的描述,但我想了解它的原因,希望你能提供帮助
【问题讨论】:
-
@Navnath 这是一个关于堆栈溢出的实际编程问题,而不是关于网站 :)
-
void foo() { foo(); } -
递归的,名词。见
recursive
我正在尝试更多地了解堆栈溢出,我不断得到关于它的描述,但我想了解它的原因,希望你能提供帮助
【问题讨论】:
void foo() { foo(); }
recursive
在堆栈上声明一个包含太多元素的数组也可以:
int tmp[999999999];
...
【讨论】:
一个例子是递归。 C++ 没有尾调用优化,因此有时在函数式语言(例如 Erlang 或 Haskell)中运行良好的算法可能会导致 C++ 中的堆栈溢出。
UPD。尽管标准不能保证,但似乎大多数现代编译器实现都支持 TCO。好吧,您仍然可以通过在其中声明任何局部变量来使用足够深的递归函数来达到堆栈溢出。
【讨论】: