スレッド間の通信にmqueueを使用していますが、オブジェクトの受け渡しに問題があります。
mq_sendとをオブジェクトのパラメーターとしてmq_receive受け取ります。char*
私はそれらを次のように使用します。
foo* foo = new foo();
foo->set_id(3);
mq_send(myQueue, (char*)foo, 1024, 1);
それから
char* buffer;
while(true)
{
ssize_t bytes_read;
bytes_read = mq_receive(myQueue, buffer, 1024, NULL);
foo* foo = (foo*) buffer;
foo->get_id(); //equals 3
//Send the object to another queue
mq_send(myOtherQueue, buffer, 1024, 1);
}
ここまでは順調ですね。
問題はここにあります
char* buffer;
while(true)
{
ssize_t bytes_read;
bytes_read = mq_receive(myOtherQueue, buffer, 1024, NULL);
foo* foo = (foo*) buffer;
foo->get_id(); //equals garbage 323234234
}
バッファを 2 回目にキャストすると、ガベージが発生します。について読んだところstatic_cast、dynamic_cast何が問題なのかわかりません。
なにが問題ですか?