【发布时间】:2014-06-30 15:18:59
【问题描述】:
我正在使用 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());
谢谢。
【问题讨论】:
-
我知道这是一个较旧的线程,但您是否尝试过 ParseFromArray() 和 SerializeToArray() ?
标签: c++ protocol-buffers zeromq