【发布时间】:2012-09-03 00:43:42
【问题描述】:
我有以下数据结构:
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 出现分段错误。在某处读到我需要对结构进行序列化,但不知道该怎么做。有人可以推荐吗?
【问题讨论】:
标签: boost message-queue boost-interprocess