小编tan*_*ccc的帖子

通过boost消息队列发送复杂的数据结构

我有以下数据结构:

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发生了分段错误.阅读我需要为结构进行序列化的地方,但无法弄清楚如何去做.谁有人建议?

boost message-queue boost-interprocess

10
推荐指数
1
解决办法
8644
查看次数

标签 统计

boost ×1

boost-interprocess ×1

message-queue ×1