堆栈运行时错误

时间:2013-05-21 02:14:12

标签: c++ stack runtime-error

#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)

这里发生了什么?

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

标准答案:N3485§3.6.1/ 3

  

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

这是不言自明的。