kin*_*er1 13 c linux stack-overflow
可能重复:
分段错误和堆栈溢出之间有什么区别?
我只是想知道,为什么堆栈溢出导致分段错误而不是堆栈溢出.
是因为堆栈限制的边界被交叉导致SIGSEGV?为什么我们在Linux中没有遇到堆栈溢出,而是一个分段错误?
int foo()
{
return foo();
}
Run Code Online (Sandbox Code Playgroud)
这个小代码应该导致堆栈溢出,但它会导致Linux中的分段错误.
堆栈溢出可能导致几种不同类型的硬件错误.
SIGSEGV进程引发(分段违例)信号.SIGILL(非法指令)信号.堆栈溢出后会发生所有这些错误.一个选项是添加堆栈溢出保护(ProPolice,...),以便在它们引起更严重的问题之前捕获堆栈溢出.
编辑:
你的意思是"真正的堆栈溢出".好吧,这种情况由SEGV覆盖(尝试访问进程没有权限的内存),因此它获得了一个SEGV,而不是特殊套管更一般的SEGV的每一个案例.