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

这里发生了什么?

4

2 回答 2

6

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

于 2013-05-21T02:16:31.573 回答
1

标准答案:N3485 § 3.6.1/3

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

这很不言自明。

于 2013-05-21T02:17:28.540 回答