2017-01-10 47 views
0

已經實現了我的‘自下而上’的flatbuffers編碼器我收到以下錯誤信息:Flatbuffers:斷言`關&&關閉<=的getSize()」失敗

../../flatbuffers-master/include/flatbuffers/flatbuffers.h:804: flatbuffers::uoffset_t flatbuffers::FlatBufferBuilder::ReferTo(flatbuffers::uoffset_t): Assertion `off && off <= GetSize()' failed. 

我認爲這可能是因爲我破壞在我將每個flatbuffers::Offset<MyTable>寫入一個數組之後,因此表生成器不能再擁有與之相關的這組函數?解決這個錯誤的最有效方法是建立一個構建器數組嗎?

目前我正在清除我的latbuffers::FlatBufferBuilder創建每個flatbuffers :: Offset使用我的MyTableBuilder,因爲這阻止了我得到一個嵌套錯誤。

這是我第三篇試圖理解flatbuffers的文章,非常感謝您的支持。

+3

添加代碼,說明你正在做的除了錯​​誤之外,將有相當大的幫助。 – tadman

回答

0

您不應該清除FlatBufferBuilder:它負責創建單個緩衝區,並且它必須爲所有進入其中的表生成所有表構建器。如果您清除FlatBufferBuilder,則會丟棄任何以前的序列化數據,現在偏移量無效。

相反,您應該修復原始的「嵌套錯誤」。如果您嘗試在父表格構建器的開始和Finish之間創建字符串,向量和子表格,則會發生嵌套錯誤。相反,在父表生成器啓動之前創建這些項,保存它們的偏移量,然後才能啓動父表生成器。