【发布时间】:2017-01-20 15:45:05
【问题描述】:
我正在尝试运行这段代码,由于某种原因,该代码在执行过程中因“分段错误(核心转储)”错误而崩溃。当我在 Code::Blocks 调试模式下运行此代码时,调用堆栈向我显示了一个不同的指针地址经过大约 130000 次迭代。
#include <iostream>
using namespace std;
long long counter = 0;
void test(int* ptr)
{
cout << ptr[0];
if (counter == 10000000)
return;
counter++;
test(ptr);
}
int main()
{
int arr[2];
arr[0] = 10;
arr[1] = 20;
test(&(arr[0]));
return 0;
}
【问题讨论】:
-
递归函数调用没有停止条件
-
所以内存会耗尽
-
@jophab 有,但是需要 10 000 000 次调用才能到达它,所以你首先得到一个 stackoverflow。
-
@Borgleader 是的.. 没错:)
-
提示:您在正确的网站上发帖 :)