为什么无限递归会导致seg错误

Pqr*_*Pqr 9 c c++ linux

为什么无限递归会导致seg错误?为什么堆栈溢出导致seg错误.我正在寻找详细的解释.

int f()
{
  f();
}

int main()
{
  f();
}
Run Code Online (Sandbox Code Playgroud)

Ski*_*izz 16

每次调用f()时,都会增加堆栈的大小 - 这就是存储返回地址的位置,因此程序知道f()完成时的去向.由于您永远不会退出f(),因此每次调用堆栈将至少增加一个返回地址.一旦堆栈段满了,就会出现段错误.您将在每个操作系统中获得类似的结果.


Dim*_*ima 15

当程序尝试访问不允许访问的内存位置时,分段错误是一种情况.无限递归会导致堆栈增长.并且成长.并且成长.最终,当它溢出到内存区域时,操作系统将禁止您访问程序.那是你得到分段错误的时候.