Вызвано необработанное исключение: нарушение доступа для записи

Суть программы в том, чтобы вставлять новую строку после всех строк, в которых нет ни одного четного элемента

#include <iostream>
using namespace std;

int** creat(int& n, int& m) {
    
    cout << "n =";
    cin >> n;
    cout << "m =";
    cin >> m;
    int** mas = new int *[2 * n];
    for (int i = 0; i < n; i++) {
        mas[i] = new int[m];
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cout << "mas[" << i << "][" << j << "] = ";
            cin >> mas[i][j];
        }
    }
    return mas;
}

void print(int** mas, int n, int m) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cout << mas[i][j] << '\t';
        }
        cout << endl;
    }
}

int main() {
    
    int n, m, k;
    int** a = creat(n, m);
    int n2 = 2 * n;
    print(a, n, m);

    int* f = new int[m];
    for (int i = 0; i < m; i++) {
        cin >> f[i];
    }

    k = 0;
    for (int i = 0; i < 2 * n; i++) {
        for (int j = 0; j < m; j++) {
            if (a[i][j] % 2 != 0) {
                ++k;
            }
        }
        if (k != m) {
            for (int u = n; u > i; u--) {
                a[u] = a[u - 1]; // Ошибка вызывается на этой строке
            }
            ++n;
            a[i] = new int[m];
            for (int p = 0; p < m; p++) {
                a[i][p] = f[p];
            }
        }
    }
    print(a, n, m);
    return 0;
}

Ответы (1 шт):

Автор решения: Адлет Адилханов

Тут все просто, это ошибка выходит тогда когда ты обрашаешься выходишь за рамки массива. Если я не ошибаюсь тут в цикле в котором ошибка ты обрашаешься к элеменут a[-1];

→ Ссылка