Не работает простейший алгоритм

Есть простейший алгоритм на c++, который заполняет и выводит двухмерный динамический массив числами от 1 до n*m, но не работает с некоторыми входными данными. проверял с значениями 12 34, 12 4, 5 8, 5, 9 - не работает, просто ничего не выводит. Пытался повторно ввести 5, 9, заработало, но с ошибкой: введите сюда описание изображения

Помогите найти ошибку

#include <iostream>


using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    int** matr = new int* [n];
    for (int i = 0; i < m; i++)
    {
        matr[i] = new int[m];
    }
    int k = 1;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            matr[i][j] = k;
            k++;
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cout << matr[i][j]<< " ";
            
        }
        cout << endl;
    }
    

    
}

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

Автор решения: Harry
int** matr = new int* [n];

Если уж вы выделили указатели для n строк

for (int i = 0; i < m; i++)  

то почему выделяете память для m из них? :)

{
    matr[i] = new int[m];
}

Так что не работает не алгоритм...

→ Ссылка