0

假设我们有函数:

void foo(int x)
{
foo(x); 
}

在我的机器(i7)上将运行大约 260k 次并产生分段错误。知道为什么会这样吗?

4

2 回答 2

7

每次调用函数时,它都需要运行时堆栈上的空间。这是该函数的本地变量分配内存的地方。正在发生的事情是你递归了很多次,以至于你的堆栈空间用完了——堆栈溢出。(这个网站的名字!)

另见:http ://en.wikipedia.org/wiki/Stack_overflow

于 2013-02-02T23:25:45.253 回答
0

每次调用函数时,系统都会将其调用存储在堆栈中,在这种情况下,系统将继续存储函数调用,直到系统堆栈变满。这种状态称为堆栈溢出。

于 2013-09-07T20:38:56.733 回答