我有以下数据结构:
typedef struct
{
short id;
string name;
short age;
} person_struct;
使用 boost 消息队列,我尝试将此数据结构发送到另一个进程中的消息队列接收器。但是,收到后,在访问上述结构中的“名称”变量时出现分段错误。
以下是我的发件人功能:
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);
以下是我的接收器功能:
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;
(*recvMsg).id 的 cout 没问题,但 (*recvMsg).name 的 cout 出现分段错误。在某处读到我需要对结构进行序列化,但不知道该怎么做。任何人都可以建议吗?