我正在使用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
的增长是每一次增长。正常吗?
答案 0 :(得分:1)
是的,您回答了自己的问题,您需要调用Clear()
(最有效)或在循环内移动fbb
的声明。完成缓冲区后,缓冲区将保留在构建器中。调用Finish()
之后可能会有断言来创建更多数据,或者在github上发布问题?