2

我可以重用从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)?或者我是否需要确保各个构建器对象具有意味着它们不会被重用的范围?

4

1 回答 1

3

clear()就像刚刚构造的一样重置 a FlatBufferBuilder,并且任何表构建器实例都不应该跨多个缓冲区甚至多个表重用。

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

于 2017-01-07T17:27:22.447 回答