【发布时间】:2013-09-20 18:27:20
【问题描述】:
#include<iostream>
using namespace std;
int f()
{
static int count=0;
count++;
if (count>=5000)
return count;
return f();
}
int main ()
{
cout<<f();
return 0;
}
这个函数在count的值超过4800后溢出堆栈,谁能告诉我如何解决这个问题?
【问题讨论】:
-
这很明显,但使用更大的堆栈。你如何做到这一点取决于你的编译器/链接器。
-
int f() { ... return f(); },递归是有限的。每个深度级别都需要在堆栈上放一点,而后者并非无底洞。 -
开启优化?用“return 5000”替换整个函数?或者将你的值初始化为 4999。
标签: c++