MPI и распределение многомерных массивов в C

Я пытаюсь использовать MPI_Scatter, отправляя строки матрицы (которые распределяются динамически), но при этом отправляется только одна строка, в других - мусор. Когда я использую статическое выделение памяти - все хорошо.

MPI_Init(&argc, &argv);
int **matrix, *matrix_stor, *row,rank, P;
MPI_Comm_size(MPI_COMM_WORLD, &P);
row = new int [P];
for(int i = 0; i < P; i++)
{
    row[i] = 0;
}
matrix = new int *[P];
for(int i = 0; i < P; i ++)
    matrix[i] = new int [P];

//int matrix[4][4], row[4], rank, size;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);

if (rank == 0){
    for(int i = 0; i < P; i++){
        for(int j = 0; j < P; j++){
            matrix[i][j] = rand()%20;
            cout < matrix[i][j] < " ";
        }
        cout < endl;
    }
}
cout < endl;

MPI_Scatter(&matrix[0][0], P, MPI_INT,&row[0], P, MPI_INT,0,MPI_COMM_WORLD);
for(int i = 0; i < P; i++)
    cout < row[i] < " ";
cout < endl;
free(matrix);
free(row);
MPI_Finalize();
return 0;

Ответы на вопрос(1)

Ваш ответ на вопрос