Динамическая матрица C++, умножающая возвращаемый вопрос

Я пытаюсь умножить на n**x**n динамических матриц и вернуть его результат. Вот код для этого:

long long int** Multiply(long long int** m1, long long int **m2)
{
    static long long int** output;
    output= new long long int* [k];

    for (int i=0; i<k; i++)
        output[k]= new long long int [k];

    long long int cellRes= 0;
    for (int i=0; i<k; i++)
    {
        for (int f=0; f<k; f++)
        {
            for (int j=0; j<k; j++)
            {
                cellRes+= m1[i][j]*m2[j][f];
            }
            output[i][f]= cellRes;
            cellRes=0;
        }
    }

    return output;
}

Похоже, что он хорошо справляется с возвратом новой матрицы, но по какой-то причине происходит сбой программы после выполнения Multiply()... Даже если я создаю новую матрицу, выделяю ее, а затем назначаю ей Multiply(), происходит сбой.

Я не могу понять, что я делаю не так. Любая идея?

1 ответ

Решение
 for (int i=0; i<k; i++)
    output[k]= new long long int [k];

должно быть:

 for (int i=0; i<k; i++)
    output[i]= new long long int [k];
         //^^^^ output[k] is out of bound and you allocate space for each row
Другие вопросы по тегам