Ошибка сегментации (дамп ядра) при создании большого двумерного динамического массива с использованием c ++ - PullRequest
0 голосов
/ 30 марта 2019

Я пытаюсь создать программу, которая создает два двумерных динамических массива, умножает их, выдает результат и рассчитывает время, затрачиваемое на процесс умножения, на основе размера ввода n. Этот код работает, когда дело доходит до выходных значений меньше 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;

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

1 Ответ

0 голосов
/ 30 марта 2019

Похоже, ошибка инициализации arr1.Вы используете m2c в качестве числа столбцов.Вы, вероятно, имели в виду m1c.

...