缓冲区大小每次增加

buffer size every increasing

我正在使用平面缓冲区处理对象流,我是否应该在每次完成创建对象时调用 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 的大小应该是恒定的。这正常吗?

是的,您回答了自己的问题,您需要调用 Clear()(最有效)或将 fbb 的声明移到循环内。当你完成一个缓冲区时,它会留在构建器中。在您调用 Finish() 之后,可能会有一个用于创建更多数据的断言,也许会在 github?

上打开一个问题