2 回答

TA貢獻(xiàn)1829條經(jīng)驗 獲得超13個贊
不確定這是否是整個問題,但快速瀏覽一下convertStreamMessage
就會發(fā)現(xiàn)一個主要問題:這FlatBufferBuilder
是一個超出范圍的局部變量,就像您返回指向其正在被破壞的內(nèi)部數(shù)據(jù)的原始指針一樣。
您要么希望確保FlatBufferBuilder
發(fā)送數(shù)據(jù)后仍然存在,要么改為用作FlatBufferBuilder::Release()
返回值。
另請注意,在調(diào)試這些問題時,您可以使用 C++ 驗證程序(或任何讀取數(shù)據(jù)的代碼)在發(fā)送數(shù)據(jù)之前檢查數(shù)據(jù),這樣可以更早地發(fā)現(xiàn)此問題。

TA貢獻(xiàn)1862條經(jīng)驗 獲得超7個贊
最后解決我的問題的只是增加客戶端中生成器的初始緩沖區(qū)大小。
似乎當(dāng)構(gòu)建器調(diào)整大小時,位于初始緩沖區(qū)末尾(在動態(tài)調(diào)整大小之前)旁邊的 2 個字節(jié)未被使用或丟失了數(shù)據(jù)。
我在客戶端使用的測試數(shù)據(jù)沒有提出這個問題,它的有效負(fù)載比我們使用的真實數(shù)據(jù)小一點,所以當(dāng)測試運(yùn)行時,沒有發(fā)生調(diào)整大小。
- 2 回答
- 0 關(guān)注
- 239 瀏覽
添加回答
舉報