use*_*831 10 c stack-overflow segmentation-fault
为什么以下程序会出现段错误?
int main() { main(); }
Run Code Online (Sandbox Code Playgroud)
即使它是一个没有结束的递归,因此根据定义也是无效的,我不明白它为什么是segfaults(gcc 4.4.3和clang 1.5(trunk)).
Nic*_*kis 10
int main() { main(); }
Run Code Online (Sandbox Code Playgroud)
会导致堆栈溢出.
但,
这样的优化版本(不是调试模式):
int main() {
return main();
}
Run Code Online (Sandbox Code Playgroud)
将在尾递归调用中转换递归,即无限循环!