размер буфера с каждым увеличением - PullRequest
0 голосов
/ 15 марта 2019

Я использую плоские буферы для обработки потоковых объектов. Должен ли я вызывать 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 Ответ

1 голос
/ 15 марта 2019

Да, вы ответили на свой вопрос, вам нужно либо позвонить Clear() (наиболее эффективно), либо переместить объявление fbb в цикл.Когда вы заканчиваете буфер, он остается в компоновщике.Возможно, после вызова Finish() может появиться утверждение о создании дополнительных данных, может быть, открыть проблему на github?

...