Проблема с очисткой памяти
Изначально M у меня трехмерная матрица размерности n/m на m на m, но когда после выполнения этой функции я пытаюсь ее очистить, возникают ошибки
void Solve_slau(int*** M, int* b, unsigned n, unsigned m)
{
int*** M_new = nullptr;
int cnt_blocks = n / m, dif = 1;
for (int i = 0; i < log2(n / m); i++)
{
M_new = new int** [n/m];
for (int j = 0; j < n/m; j++)
{
M_new[j] = new int*[m];
for (int k = 0; k < m; k++) M_new[j][k] = new int[m];
}
for (int j = n / m - 1; j > dif - 1; j--)
{
for (int i1 = 0; i1 < m; i1++)
{
for (int j1 = 0; j1 < m; j1++)
{
//M_new[j * m + i1][j1] = 0;
b[j * m + i1] -= M[j][i1][j1] * b[(j - dif) * m + j1];
M_new[j][i1][j1] = 0;
for (int k = 0; k < m; k++)
{
M_new[j][i1][j1] -= M[j][i1][k] * M[j - dif][k][j1];
}
}
}
}
for (int k = 0; k < n / m; k++)delete_matrix(M[k], m);
delete[] M;
M = M_new;
M_new = nullptr;
cout << endl;
}
}
В чем может быть ошибка?