c++ - SIGSEGV 错误(可能是数组索引越界)

标签 c++ segmentation-fault

谁能帮忙找出这段代码中的错误?我无法得到错误,它给出了运行时错误。我检查了所有用于矩阵的循环,但没有发现错误。

    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++;
        }
    }

最佳答案

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

做这样的事情:

const int  n = SOME_VALUE;
int arr[n][n];
//rest remains same

此外,您应该使用 < n 而不是 John 指出的 <= n。

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

关于c++ - SIGSEGV 错误(可能是数组索引越界),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34156806/

相关文章:

c++ - CUDA:处理不同大小的数组

c++ - 静态字段的析构函数。单例实现

c++ - 以可移植的方式使用 DB Api

c++ - QSqlQuery 使用数百 MB 内存

c - 我的 while 循环出现段错误

gcc - 迭代和取消引用未对齐的内存指针会导致段错误吗? GCC 优化器中的错误?

c++ - 从函数 C++ 打印出二维数组

c++ - 大小为 500000 的部分排序数组的快速排序段错误

c++ - vector vector 的段错误

signals - C SIGSEGV 处理程序和 Mprotect