如何将google::p rotobuf::消息直接序列化到预分配的内存中?
How to serialize a google::protobuf::Message directly into preallocated memory?
如果我在google::protobuf::Message
对象上调用ByteSizeLong
,并且我有一个适当大小的预分配内存块(大于msg.ByteSizeLong()
(的char*
,有没有办法将消息直接序列化到内存中而无需额外复制?
你可以做:
msg.SerializeToArray(buffer, bufferSize);
或者,如果您确实在消息上调用了ByteSizeLong()
,那么这会更快一些:
msg.SerializeWithCachedSizesToArray((unsigned char*)buffer);
第二种形式要求您确实调用了ByteSizeLong()
(并且之后没有更改任何内容(,因为这样做将存储所有子对象的缓存大小。
相关文章:
- 如何在C++中序列化结构数据
- 序列化,没有库的整数,得到奇怪的结果
- 如何知道QDataStream不能反序列化某些内容
- 如何使用Python从C++中读取谷物序列化数据
- 如何使用boost::具有嵌套结构和最小代码更改的序列化
- 带有Protobuf序列化的C++Hazelcast:字符串不是UTF-8格式的
- 自定义对象的dlib序列化在gcc中失败
- C++boost序列化多态性问题
- 增强基于 XML class_id的反序列化
- 提升反序列化对象具有 nan 或 -nan 值
- 在 cpp 中的平面缓冲区中序列化对象
- 如何将google::p rotobuf::消息直接序列化到预分配的内存中?
- 在不放置新运算符的情况下,在预分配的内存上使用虚函数初始化对象 - 这可能吗?如果没有,为什么
- 在序列化过程中删除不必要的内存分配
- 从 boost::存档:binary_iarchive 反序列化 std::string 时出现错误的分配异常
- 预序列化原型消息的某些字段
- Boost::序列化 - 如何序列化需要数据分配但没有默认构造函数的数据结构
- 预序列化消息对象-实现
- 如何在构造函数外部分配 Boost 的情况下序列化大型错误定位浮点数组?
- 在循环中初始化预分配的结构体实例