假设我们有这个功能:
void foo(int x)
{
foo(x);
}
我机器上的(i7)将运行大约260k次并产生分段故障。知道为什么会这样吗?
答案 0 :(得分:7)
每次调用函数时,它都需要运行时堆栈上的空间。这是该函数的本地变量分配内存的地方。发生的事情是你正在递归这么多次以至于你的堆栈空间不足 - 堆栈溢出。 (这个网站的名称!)
答案 1 :(得分:0)
每次调用函数时,系统都会将其调用存储在堆栈中,在这种情况下,系统将继续存储函数调用,直到系统堆栈变满为止。这种状态称为堆栈溢出。