我正在使用 FlatBuffers 反序列化包含 union 结构的数据
struct ReqMsgUnion {
ReqMsg type;
void *value;
}
架构:
table Request {
seq_no: uint = 0;
msg: ReqMsg (required);
}
现在我想使用 memcopy() 来复制 'value',但是我无法获得正确的 'value' 大小,因为里面有一些 '\0'(如果我没记错的话)。 我在网上搜索,找到了“在模式中添加一个dataLength”之类的方法,但我想知道是否还有其他更好的想法。 谢谢!
最佳答案
没有办法从 void*
中提取它指向的对象的大小(也不是它的实际 类型)。该信息(如果需要)必须以其他方式明确包含。</p>
尽量不要在 C++ 中首先使用 void*
。
关于c++ - 如何从 flatbuffers 中获取 union 结构的 void* 值反序列化的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57449984/