MPI_Send / Recv C ++ std :: string Segmentation Fault

时间:2013-05-04 02:13:37

标签: c++ c segmentation-fault mpi

我在这里阅读了一堆页面并发布了之前类似的问题但无济于事,我似乎无法找到可行的解决方案。

这是一个单独的任务,提供的代码可以启动,这很糟糕,但我们必须使用它:/我不是要求解决整个事情,只是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

1 个答案:

答案 0 :(得分:3)

您可以尝试MPI_Send(parent.c_str(),parent.size()....);并从另一方接收char buf [parentSize]。

相关问题