У меня есть следующая структура данных:
typedef struct
{
short id;
string name;
short age;
} person_struct;
Используя ускоренную очередь сообщений, я попытался отправить эту структуру данных получателю очереди сообщений в другом процессе. Однако после получения у меня возникла ошибка сегментации при доступе к переменной «имя» в приведенной выше структуре.
Ниже моя функция отправителя:
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;
cout для (*recvMsg).id в порядке, но ошибка сегментации произошла при cout для (*recvMsg).name. Где-то читал, что мне нужно сделать сериализацию для структуры, но не могу понять, как это сделать. Кто-нибудь может предложить?