代码之家  ›  专栏  ›  技术社区  ›  benjist

如何正确删除从磁盘读取的FlatBuffer对象

  •  0
  • benjist  · 技术社区  · 9 年前

    我从磁盘读取压缩数据,解压缩它,并创建一个由FlatBuffer方案生成的“Cell”对象。

    Cell* getCell(int x, int y, int z) {
         // ...
        return GetCell(buffer); // buffer is an inflated uint_8 data array 
    }
    

    到现在为止,一直都还不错。但如何删除该项目?因为以后不可能访问缓冲区数据。

    1 回复  |  直到 9 年前
        1
  •  1
  •   Aardappel    9 年前

    您需要单独保留缓冲区才能删除它,因为您不能从根指针(在本例中)派生缓冲区指针 Cell * ). 正如你自己所说,你不能破坏 细胞* 或者,因为它不拥有那个记忆。

    编辑:显然,这样的功能是可能的,请参见: https://github.com/google/flatbuffers/commit/6862b2ff08021c7ba474334a6e2a3f3b1fc0dee5