【问题标题】:What are common causes of stack overflows in C and C++ programs? [duplicate]C 和 C++ 程序中堆栈溢出的常见原因是什么? [复制]
【发布时间】:2013-05-22 11:14:49
【问题描述】:

我正在尝试更多地了解堆栈溢出,我不断得到关于它的描述,但我想了解它的原因,希望你能提供帮助

【问题讨论】:

标签: c++ c


【解决方案1】:

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

int tmp[999999999];
...

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我很确定 gcc 可以优化尾递归,你的依据是什么?
    • 嗯。确实。我猜,我的编译器已经过时了。
    猜你喜欢
    • 2011-12-13
    • 1970-01-01
    • 2012-08-31
    • 2010-11-01
    • 2020-11-14
    • 2011-03-03
    • 1970-01-01
    • 2016-09-28
    相关资源
    最近更新 更多