C++动态矩阵乘法返回问题

C++ Dynamic Matrices Multiplying Return Issue

本文关键字:返回 问题 动态 C++      更新时间:2023-10-16

我正在尝试乘以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()赋值给它,它也会崩溃。

我不明白我做错了什么。知道吗?

 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