1. 程式人生 > >c++ protobuf獲取資料(指標)

c++ protobuf獲取資料(指標)

如果proto結構體的變數是基礎變數,比如int、string等等,那麼get直接根據變數名,set的時候直接呼叫set_xxx即可。

如果變數是自定義型別,那麼C++的生成程式碼中,就沒有set_xxx函式名,取而代之的是三個函式名:

  • set_allocated_xxx()
  • release_xxx()
  • mutable_xxx()

使用set_allocated_xxx()來設定變數的時候,變數不能是普通棧記憶體資料,必須是手動new出來的指標,至於何時delete,就不需要呼叫者關心了,protobuf內部會自動delete掉通過set_allocated_設定的記憶體;

release_xxx()是用來取消之前由set_allocated_xxx設定的資料,呼叫release_xxx以後,protobuf內部就不會自動去delete這個資料了;

mutable_xxx()是用來返回之前set_allocated_xxx設定的資料的指標,方便你臨時讀取這個資料的同時,protobuf內部繼續自動管理(delete)該資料。