我在做一个问题,我用一个递归函数来创建一个分段树.对于较大的值,它开始给出分段错误.所以我想之前可能是因为数组索引值超出了界限但后来我认为可能是因为程序堆栈太大了.我编写此代码来计算系统给出seg-fault之前允许的最大递归调用次数.
#include<iostream>
using namespace std;
void recur(long long int);
int main()
{
recur(0);
return 0;
}
void recur(long long int v)
{
v++;
cout<<v<<endl;
recur(v);
}
Run Code Online (Sandbox Code Playgroud)
在运行上面的代码之后,我得到v的值为261926和261893和261816,然后才得到分段错误并且所有值都接近这些.
现在我知道这将取决于机器到机器,以及被调用的函数堆栈的大小,但是有人可以解释如何保护安全免受seg-fault的基础知识以及可以记住的软限制是什么.