C#中的flatbuffers
是否可以将对象序列化为本机(非托管)内存缓冲区?
所以我想做这些步骤:
我正在考虑使用C#中的某个自定义内存缓冲区分配器,或者将某种内存缓冲区的所有权从C#转移到C ++。
一般情况下,我希望避免在将数据从C#发送到C ++时复制内存,反之亦然。我希望在C#和C ++之间共享这个内存缓冲区。
我该怎么做?
答案 0 :(得分:1)
不,当前的FlatBuffers实现被硬编码为写入常规字节数组。之后您可以将此数组复制到本机内存,或者像@ pm100所说,将其固定。
FlatBuffers中的所有序列化都经历了一个名为ByteBuffer
的抽象,所以如果你为本机内存实现了它,那么可以相对容易地直接使用它。
答案 1 :(得分:0)
是的,如果您使用C ++ / CLI。 bool,32位int,short等基本数据类型是相同的。对于其他类型,请查看msclr :: interop :: marshal_as<>。