2018/11/03

[c]LevelDB C (2)

まずは、以前参考にしたC interfaceのexampleを見る。

サンプルだからだろうが、中身はシンプルだ。

  • openオプション設定
  • open
  • writeオプション設定
  • put
  • readオプション設定
  • get
  • delete
  • close
  • destroy

destroyまですると、DBのディレクトリごと削除するようだった。


気になったのでvalgrindを使ってみると、メモリの解放をしていないところがあった。
あと、getしたものをそのまま\0無しで出力しているので、よろしくない。
そこら辺を修正した。

https://github.com/hirokuma/leveldb-c-example/blob/64f448da1f345f4c94b924ceb2dd9f62725e649e/leveldb_example.c


オプションはそれぞれ内部でmalloc()しているので、それぞれの解放APIを呼ぶことになった。
openのオプションはdestroyでも使っているが、同じleveldb_options_tである必要はないかも。
少なくとも、このサンプルを改造して、openとdestroyでそれぞれleveldb_options_create()を使ったが、特にエラーは出ていない。

c.ccを見ても、options->repを渡しているだけだし、参照してはいるものの保持している感じはしないので、たぶん・・・たぶん大丈夫なんじゃなかろうか。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。