缓冲区大小每增加一次

时间:2019-03-15 12:01:36

标签: c++ c++11 serialization flatbuffers

我正在使用FlatBuffers处理对象流,每次完成创建对象后都应该调用FlatBufferBuilder::Clear吗?我的代码就像:

FlatBufferBuild fbb;
while (true) {
    Foo foo;
    RecvFooFromNetwork(&foo);
    FooObject = CreateFooObjectDirect(fbb, foo.x, foo.y, ...);
    SaveToDisk(fbb.GetBufferPointer(), fbb.GetSize());

    // <-- Should I call fbb.Clear() here?
}

尽管fbb.GetSize()的大小应该保持不变,但我发现Foo的增长是每一次增长。正常吗?

1 个答案:

答案 0 :(得分:1)

是的,您回答了自己的问题,您需要调用Clear()(最有效)或在循环内移动fbb的声明。完成缓冲区后,缓冲区将保留在构建器中。调用Finish()之后可能会有断言来创建更多数据,或者在github上发布问题?