MPI_Send/Recv c++ std::string分段错误
MPI_Send/Recv C++ std::string Segmentation Fault
我在这里读了一堆页面,并发布了之前类似的问题,但无济于事,我似乎找不到一个可行的解决方案。
这是一个统一的分配,提供的代码开始,这是可怕的,但我们必须使用它:/我不是要求解决整个事情,只是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)中的字符数和null终止符+ 1 ?
您可以尝试MPI_Send(parent.c_str(), parent.size()....);并从另一端接收一个char buf[parentSize]
相关文章:
- 分段故障(堆芯转储)矢量
- 数组的指针从不分段故障
- 在某些循环内使用vector.push_back时出现分段错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 在线编译器中的分段C++没有打印消息
- cppcheck在const std::string[]上引发警告
- std::future<nboth:::Both<int, std::string>> 分段错误
- 程序接收信号SIGSEGV,分段错误。使用矢量<string>时
- C++ Firebase 分段错误,Linux,位于 std::string::assign 无法访问地址 0xf 处的
- std::string::迭代器的Linux分段错误
- boost::interprocess::string缺少一个字符,并且在销毁时出现分段错误
- 用string.h将错误分段到队列中
- std::string出现分段错误
- 在C++中迭代 std::set<std::string> 时出现分段错误
- std::string::assign(std::string const&) 中的分段错误
- 使用自定义排序功能对向量<string>中的字符串进行排序时出现分段错误
- MPI_Send/Recv c++ std::string分段错误
- Std::string::empty() const()不抛出的分段错误
- 分配std::string时出现分段错误
- 当使用glut和std::string时,在main()之前出现分段错误