2013-05-21 27 views
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) 

這是怎麼回事?

回答

6

首先,您不允許自己致電main。其次,它似乎在做「你期望的事情」並進行調用,所以你會導致無限遞歸,它會佔用你所有的堆棧空間,然後溢出它。

1

標準答案:N3485§3.6.1/3

的功能主要不得在程序中使用。

這是很明顯的。