Выделить память для каждого потока

Подскажите пожалуйста, как выделить для каждого отдельного потока свою динамическую память? Листаю документацию, но не могу сложить пазл из всего, что там есть, в рабочий код. M_new для каждого потока должна быть отдельной и независимой от других матрицей. Если закомментировать #pragma omp, то все работает, как надо

int** M_new = nullptr;

        int j, i1, j1, k;
#pragma omp parallel
        {

#pragma omp parallel for private(j, i1, j1, k, M_new) shared(M, b, b_new)
            for (j = cnt_blocks - 1; j > dif - 1; j--)
            {
                
                M_new = new int* [m];
                for (int k = 0; k < m; k++) M_new[k] = new int[m];

                for (i1 = 0; i1 < m; i1++)
                {
                    for (j1 = 0; j1 < m; j1++)
                    {

                        b_new[j * m + i1] -= M[j][i1][j1] * b[(j - dif) * m + j1];
                        M_new[i1][j1] = 0;

                        for (k = 0; k < m; k++)
                        {
                            M_new[i1][j1] -= M[j][i1][k] * M[j - dif][k][j1];

                        }

                    }

                }

                for (i1 = 0; i1 < m; i1++)
                {
                    for (j1 = 0; j1 < m; j1++)
                    {

                        M[j][i1][j1] = M_new[i1][j1];


                    }
                    delete[] M_new[i1];
                }

                delete[] M_new;

            }
        }

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