c++ - MPI_Send/Recv C++ std::string 段错误

标签 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 表示空终止符?

最佳答案

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

关于c++ - MPI_Send/Recv C++ std::string 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16369911/

相关文章:

c++ - 在 C++ 中返回结构数组

c++ - BST 删除/删除节点 - root

c++ - 为什么我们需要需要?

c++ - makefile 中 CXX 的值从何而来?

c - 使用 cURL 的段错误

c++ - 主方法声明处的 EXC_BAD_ACCESS

c++ - 为什么模板允许具有非 constexpr 构造函数的 constexpr 函数成员?

检查输入是否与 C 中的单词匹配

c++ - 尝试将对象插入空指针数组时出现段错误

.c 文件中的查找表出现 C 编译器错误