函数递归的最大数量c ++

时间:2013-02-02 23:23:54

标签: c++ recursion segmentation-fault

假设我们有这个功能:

void foo(int x)
{
foo(x); 
}
我机器上的

(i7)将运行大约260k次并产生分段故障。知道为什么会这样吗?

2 个答案:

答案 0 :(得分:7)

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

另请参阅:http://en.wikipedia.org/wiki/Stack_overflow

答案 1 :(得分:0)

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