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

标签 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() 分配给它,它会崩溃。

我不知道我做错了什么。有什么想法吗?

最佳答案

 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

关于C++ 动态矩阵乘法返回问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25981680/

相关文章:

c++ - lParam 或 WCHAR[] 有问题

c++ - 检查空字符 C++

mysql - 在MySQL中使用复杂逻辑的动态查询

c++ - 获取辅助硬盘的空间 - C++

c++ - 为什么通过 const 函数返回 std::vector 元素的地址是错误的?

c++ - c/c++ hackerrank,我的代码可以工作,但我得到 0,38/10 分(不知道为什么)代码可以工作

javascript - 使用 jQuery 创建一个元素并将其 append 到多个元素

c++ - Boost 几何交集无法正确输出

c++ - 为什么此代码会出现段错误?

function - 有没有办法让函数 var 在定义后动态化?