我有以下数据结构:
typedef struct
{
short id;
string name;
short age;
} person_struct;
Run Code Online (Sandbox Code Playgroud)
使用boost消息队列,我试图在另一个进程中将此数据结构发送到消息队列接收器.然而,收到后,我在访问上述结构中的'name'变量时出现了分段错误.
以下是我的发件人功能:
person_struct MyRec;
MyRec.id = 1;
MyRec.name = "ABC123";
MyRec.age = 20;
message_queue mqSender(create_only, "MSG_Q", 100, sizeof(person_struct));
mqSender.send(&MyRec, sizeof(person_struct), MQ_PRIORITY);
Run Code Online (Sandbox Code Playgroud)
以下是我的接收功能:
message_queue myReceiver(open_only, "MSG_Q");
person_struct *recvMsg = new person_struct();
size_t msg_size;
unsigned int priority;
myReceiver.receive(recvMsg, sizeof(person_struct), msg_size, priority);
cout << "ID: " << (*recvMsg).id << endl;
cout << "Name: " << (*recvMsg).name << endl;
cout << "Age: " << (*recvMsg).age << endl;
Run Code Online (Sandbox Code Playgroud)
(*recvMsg).id的cout没问题,但cout为(*recvMsg).name发生了分段错误.阅读我需要为结构进行序列化的地方,但无法弄清楚如何去做.谁有人建议?