我在这里阅读了很多页面并发布了以前的类似问题但无济于事,我似乎无法找到可行的解决方案。
这是一个 uni assignment,提供的代码开始时很糟糕,但我们必须使用它:/我不是要求解决整个问题,只是 MPI_Send 和 Recv,因为我很难过。
掌握:
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) 和 + 1 作为空终止符?