SIGSEGV错误(可能数组索引超出范围)

时间:2015-12-08 13:12:17

标签: c++ sigsegv

有人可以帮忙查找此代码中的错误吗?我无法得到错误,&它给出了运行时错误。我检查了所有用于矩阵但不能找到错误的循环。

    int  n, arr[n][n];
    cin>>n;
    for (i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            cin>>arr[i][j];
        }
    }

    for (i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            sum = 0;
            prev = ne;
            ne = 0;

            if(arr[i][j] == 1)
            {
                ne = i+j;
                prev = i+j;
                sum = ne - prev; 
                if(sum<0)
                    sum=-sum;
                steps+=sum;
            }           
            c++;
        }
    }

2 个答案:

答案 0 :(得分:2)

您正在使用变量n来创建数组而不进行初始化。You must always use a constant for initializing a static array

做这样的事情:

std::min

另外,你应该使用&lt; n,而不是约翰指出的&lt; = n。

如果你想要一个动态数组,那么使用STL vector会更好。

答案 1 :(得分:0)

您没有初始化n变量,而且循环也应该

for (i=0; i<n; i++)

C ++中的数组索引从零开始

相同的j循环