まずは、以前参考にしたC interfaceのexampleを見る。
サンプルだからだろうが、中身はシンプルだ。
- openオプション設定
- open
- writeオプション設定
- put
- readオプション設定
- get
- delete
- close
- destroy
destroyまですると、DBのディレクトリごと削除するようだった。
気になったのでvalgrindを使ってみると、メモリの解放をしていないところがあった。
あと、getしたものをそのまま\0無しで出力しているので、よろしくない。
そこら辺を修正した。
オプションはそれぞれ内部でmalloc()しているので、それぞれの解放APIを呼ぶことになった。
openのオプションはdestroyでも使っているが、同じleveldb_options_tである必要はないかも。
少なくとも、このサンプルを改造して、openとdestroyでそれぞれleveldb_options_create()を使ったが、特にエラーは出ていない。
c.ccを見ても、options->repを渡しているだけだし、参照してはいるものの保持している感じはしないので、たぶん・・・たぶん大丈夫なんじゃなかろうか。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。