2

私はここでたくさんのページを読み、以前の同様の質問を無駄に投稿しましたが、実行可能な解決策を見つけることができないようです.

これは、開始するための提供されたコードを使用したユニ割り当てですが、これは恐ろしいことですが、それを使用する必要があります。

主人:

string parent; //Is initialised to a random sequence of characters before I try the send
int parentSize = parent.size()+1;

for (int i = 1; i < processes; i++)//Send current parent to slaves
{
    MPI_Send(&parentSize, sizeof(int), MPI_INT, i, MSIZE, MPI_COMM_WORLD); //This works fine
    MPI_Send(&parent, parent.size(), MPI_BYTE, i, MSEND, MPI_COMM_WORLD);
}

奴隷:

int parentSize;

MPI_Recv(&parentSize, sizeof(int), MPI_INT, 0, MSIZE, MPI_COMM_WORLD, &status); //Works fine
MPI_Recv(&parent, parentSize, MPI_BYTE, 0, MSEND, MPI_COMM_WORLD, &status); //Gives a segfault when I try to cout parent

間違った量のメモリを割り当てていますか? size() は文字列内の文字数 (28) を返し、null ターミネータには + 1 を返すと思いますか?

4

1 に答える 1