【问题标题】:Stack runtime error堆栈运行时错误
【发布时间】:2013-05-21 02:14:12
【问题描述】:
#include <stack>
#include <functional>

int main()
{
    std::stack<std::function<int()>> s;
    s.push(main);
    return s.top()();
}

我得到以下诊断结果:

result: runtime error        time: 0.04s    memory: 39704 kB     signal: 11 (SIGSEGV)

这是怎么回事?

【问题讨论】:

    标签: c++ stack runtime-error


    【解决方案1】:

    首先,您不能自己拨打main。其次,它似乎在做“你所期望的”并进行调用,所以你会导致无限递归,这会耗尽你所有的堆栈空间,然后溢出它。

    【讨论】:

      【解决方案2】:

      标准答案:N3485 § 3.6.1/3

      main函数不能在程序中使用。

      这是不言自明的。

      【讨论】:

        猜你喜欢
        • 2013-09-11
        • 2010-12-22
        • 2011-09-10
        • 2010-09-12
        • 2021-05-28
        • 2010-11-09
        • 1970-01-01
        • 2011-03-27
        相关资源
        最近更新 更多