Проблема с очисткой памяти

Изначально 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;

    }

}

В чем может быть ошибка?


Ответы (0 шт):