gpt4 book ai didi

c++ - 使用 mqqueue 将数据读入缓冲区时出现问题

转载 作者:行者123 更新时间:2023-11-30 01:41:41 25 4
gpt4 key购买 nike

我正在使用 mqueue在线程之间进行通信,我在传递对象时遇到了问题。

mq_sendmq_receivechar* 作为对象的参数。

我按以下方式使用它们。

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
}

第二次转换缓冲区时,我得到了垃圾。我阅读了有关 static_castdynamic_cast 的内容,但找不到问题所在。

怎么了?

最佳答案

我在这里看到两个问题。首先,你的 Foo TriviallyCopyable 吗?

其次,

char* buffer;
bytes_read = mq_receive(myOtherQueue, buffer, 1024, NULL);

我没有看到 buffer 有任何分配。

关于c++ - 使用 mqqueue 将数据读入缓冲区时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40978841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com