私は、特定のlibgit2オブジェクトを解放するのが安全であることを理解しようとしています(ガベージコレクション言語用のバインディングを作成しています。 )。リポジトリがfree'dされた後、彼らは手動git_object_free
を持つユーザーによって閉じられますが、のいずれかをアクセスしているまで、それが生み出したすべてのオブジェクトがまだ存在すること安全に無料のlibgit2オブジェクト
注:
git_repository_free
状態のためドキュメントバッキングリポジトリのないオブジェクトの属性は未定義の動作になります
「属性」はここでは何を意味していますか? "git attributes"、つまりgit_attr_*
functionsを参照しているようには見えません。これは、オブジェクトではなくリポジトリ自体のプロパティであるためです。
これは私がそのリポジトリから任意のオブジェクトに
git_object_free
以外の任意のメソッドを呼び出してはならないことを意味するのでしょうか?これは「gitオブジェクト」(タグ、コミット、ツリー、ブロブ)にのみ適用されますか?たとえば、
git_repository_free
を呼び出した後にgit_repository_config
で取得したgit_config
を安全に使用できますか?知っておく必要があるケースはありますか?
オブジェクトを見ることができない
@SimonByrneもちろん。私は答えを編集しました:もし解放されたgitリポジトリのアクセサ/メソッドを使ってこれらの属性にアクセス/使用すると、結果は悪くなります。その「属性」は '.gitattributes'とは関係がありません。 – VonC
それは、1への答えがはいであることを意味しますか? 2および/または3についての任意のアイデア? –