首页 > 解决方案 > 有人可以帮我弄清楚如何从我的代码中删除来自hackerrank的分段错误

问题描述

它不工作,我不知道为什么:

int main() {
    int n,q,sizee,i,j;
    int ans;
    int ar[100];
    cin>>n;
    cin>>q;
    int **arr= new int *[n];
    for(int i=0;i<n;i++)
    {  
        cin>>sizee;
        arr[i] = new int[sizee];
        for(int j=0;j<sizee;j++)
            cin>>arr[i][j];
    }
    i=0;
    for(int z=0;z<q;z++)
    {
         int x,y;
         cin>>x;
         cin>>y;
         ar[i]=arr[x-1][y-1];
         i++;
    }
    for(int i=0;i<q;i++)
         cout<<ar[i];
    delete[] arr[i];
    delete[] arr;

    return 0;
}

即使它在代码块中正常工作,它也会显示分段错误。

标签: c++

解决方案


看起来像这个循环:

for(int i=0;i<q;i++)
     cout<<ar[i];
delete[] arr[i];
delete[] arr;

缺少一些括号:

for(int i=0;i<q;i++)
{
     cout<<ar[i];
     delete[] arr[i];
}
delete[] arr;

delete[] arr[i];可能会给你一个段错误i == q,也许你应该循环使用i < n.


推荐阅读