简体   繁体   English

使用 C++ 创建大型二维动态数组时出现分段错误(核心转储)

[英]Segmentation fault (core dump) when creating a large 2d dynamic array using c++

Im trying to create a program that creates two 2d dynamic arrays and multiply them and give an output and calculate the time taken for the multiplication process based on the input size n.我正在尝试创建一个程序,该程序创建两个二维动态数组并将它们相乘并给出输出并根据输入大小 n 计算乘法过程所需的时间。 This code works when it comes to outputs lesser than 7 rows and 7 cols but gives an error when the number goes above 8.当输出少于 7 行和 7 列时,此代码有效,但当数字超过 8 时会出错。

using namespace std;

int m1c , m1r , m2c , m2r , i , j , k , l;

int** arr1 = new int*[m1c];
int** arr2 = new int*[m2c];
int** multArr = new int*[m1c];

int main(){

    cout << "Enter the Number of rows for matrix 1 :";
    cin >> m1c;

    cout << "Enter the Number of columns for matrix 1 :";
    cin >> m1r;

    cout << "Enter the Number of rows for matrix 2 :";
    cin >> m2c;

    cout << "Enter the Number of columns for matrix 2 :";
    cin >> m2r;

    for (i = 0; i < m1r; i++) {
        arr1[i] = new int[m1c];
        multArr[i] = new int[m1c];
    }

    for (i = 0; i < m2r; i++) {
        arr2[i] = new int[m2c];
    }

    if (m1r != m2c) {
        cout << "Number of rows in the first matrix must be equal to the numbr of columns in the second matrix ";
        return -1;
    }


    for (i = 0; i < m1r; i++) {
        for (j = 0; j < m2c; j++) {

            arr1[i][j] = rand() % 100;
        }
    }

    for (i = 0; i < m2r; i++) {
        for (j = 0; j < m2c; j++) {

            arr2[i][j] = rand() % 100;
        }
    }


    //Displaying the two arrays

    for (i = 0; i < m1r; i++) {
        for (j = 0; j < m1c; j++) {
            cout << arr1[i][j] << " ";
        }
        cout << endl;
    }

    cout << endl;

    for (i = 0; i < m2r; i++) {
        for (j = 0; j < m2c; j++) {

            cout << arr2[i][j] << " ";
        }
        cout << endl;
    }
    delete[] arr1;
    delete[] arr2;

    return 0;

}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Looks like an error initializing arr1.看起来像初始化 arr1 时出错。 Your using m2c as the column count.您使用 m2c 作为列数。 You probably meant m1c.你可能指的是 m1c。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM