有效清除平板缓冲区构建器的各层

时间:2017-01-07 15:37:40

标签: flatbuffers

我可以重复使用' sub'调用flatbuffers::FlatBufferBuilder后从builder.Clear()生成的构建器实例? builder.Clear()对子构建器的影响是什么?

生成了flatbuffers架构,如下所示:

table FB_mytable1{
myshort::ushort = 0;
}
table FB_table2{
nestedTable1::FB_mytable1;
nestedTable1::FB_mytable1;
}
root_type FB_table2;

如果我使用builder.clear()重置构建器,我的实例化' flatbuffers :: FlatBufferBuilder',这将允许我生成新的串行数据而无需调用重置功能或续订任何个人表格序列化程序,例如我FB_mytable1Builder myFB_mytable1Builder(builder)的实例化?或者我是否需要确保各个构建器对象的范围意味着它们不会被重用?

1 个答案:

答案 0 :(得分:3)

clear()重置FlatBufferBuilder,好像刚刚构建一样,任何表构建器实例都不应该在多个缓冲区甚至多个表中重用。

请参阅,FlatBufferBuilder是一个有点重量级的结构(因为它拥有一个缓冲区),所以在可能的情况下重用它是有意义的。然而,表构建器是超轻量级的,因此应该只是用于构造单个表的局部变量,您不能重用它们。