关于Segmentation Fault的问题,如何解决?

为啥在OJ上会判定Segmentation Fault 啊,感觉没有数组越界
题目是2019蓝桥杯C++组完全二叉树的遍历
代码如下:

#include 
#include

using namespace std;
const int N=1e5+10;
int a[25],n,num[N];

int main()
{
  // 请在此输入您的代码
  int x;
  cin>>x;
  for(int i=1;i<=x;i++)
    cin>>num[i];
  while(x)
  {
    int m=(int)pow(2,n);
    for(int i=m;i<2*m&&iint Max=0,l;
  for(int i=0;i<25;i++)
    if(Max1<return 0;
}

变量n没有初始化吧
while(x)这里最好再加一个条件,n<25,避免a数组越界

因为程序没有对数组 a 进行初始化,导致数组 a 中的元素的值不确定。因此在执行 a[n]+=num[i] 时,可能会访问数组 a 中未定义的内存地址,导致程序崩溃。使用int a[25]={0}将数组 a 中的元素全部初始化为0,记得养成声明即初始化的习惯。