我试图乘以 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(),它会崩溃。
我无法弄清楚我做错了什么。有什么想法吗?
答案 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