是否可以使用 C# 中的 flatbuffers
将对象序列化到 native (非托管)内存缓冲区?
所以我想执行以下步骤:
- 从 native 内存分配一个 native 内存缓冲区
- 在 C# 中创建对象并将它们序列化到分配的缓冲区中
- 将此内存缓冲区发送到 C++ 进行反序列化
我正在考虑 C# 中的一些自定义内存缓冲区分配器,或者将内存缓冲区的所有权从 C# 转移到 C++ 的某种方式。
一般来说,我想避免在将数据从 C# 发送到 C++ 时复制内存,反之亦然。我希望此内存缓冲区在 C# 和 C++ 之间共享。
我该怎么做?
最佳答案
不,当前的 FlatBuffers 实现被硬编码为写入常规字节数组。之后您可以将此数组复制到 native 内存,或者像@pm100 所说的那样,固定它。
FlatBuffers 中的所有序列化都经过一个称为 ByteBuffer
的抽象,因此如果您为 native 内存实现了它,就可以相对容易地直接使用它。
关于c# - 使用 FlatBuffers 从 C# 序列化到 native 内存缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44979948/