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

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

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 (), она падает.

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

0

Решение

 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
2

Другие решения