C ++动态矩阵乘以回归问题

时间:2014-09-22 19:23:34

标签: c++ pointers dynamic matrix alloc

我试图乘以 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 个答案:

答案 0 :(得分:2)

 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