我使用zeromq与protobuf的发送/收到消息,但代码被拍击与接收机端Segmentation fault (core dumped)
错误在解析接收到的数据。
Scan
是我的消息。
sender.cpp
Scan proto_ls_msg;
proto_ls_msg.set_angle_min(0.0);
proto_ls_msg.set_angle_max(180.5);
std::string ls_msg_str;
proto_ls_msg.SerializeToString(&ls_msg_str);
zmq::message_t request (ls_msg_str.size());
memcpy (request.data(), ls_msg_str.c_str(),ls_msg_str.size());
socket.send (request);
collector.cpp
zmq::message_t recieved;
socket.recv (&recieved);
//thanks to πάντα ῥεῖ
std::string ls_msg_str((char*)recieved.data(),recieved.size());
Scan *pb_laser_msg_rcv;
pb_laser_msg_rcv->ParseFromString(ls_msg_str); // <-- Segmentation fault here
我尝试转换不同的方式zmq::message_t
到std::string
,但它仍然提供了分段故障。
编辑更新:
//std::string ls_msg_str((char*)recieved);
std::string ls_msg_str((char*)recieved.data(),recieved.size());
谢谢。