我想了解何時釋放某些libgit2對象是安全的(我正在爲垃圾收集語言編寫綁定,並且需要跟蹤哪些對象需要保持對其他對象的引用)。安全地釋放libgit2對象
注意,一個倉庫後free'd,仍然會存在,催生的所有對象,直到它們由用戶手動關閉與
git_object_free
,但訪問任何的:爲
git_repository_free
狀態的文檔沒有後備存儲庫的對象的屬性將導致未定義的行爲
「屬性」在這裏意味着什麼?它似乎沒有提到「git屬性」,即git_attr_*
functions,因爲這些屬性是存儲庫本身的屬性,而不是對象。
這是否意味着我不應該叫比
git_object_free
其他任何方法從該庫的任何對象?這隻適用於「混帳對象」(即標籤,提交,樹木和斑點)?例如,我可以在撥打
git_repository_free
之後安全地使用通過git_repository_config
獲得的git_config
嗎?是否還有其他需要注意的情況?
在libgit2的對象都是不透明的,所以不要暴露任何OOP屬性。 –
@SimonByrne當然。我已經編輯了答案:如果你通過訪問器/方法訪問/使用那些已釋放的git倉庫中的屬性,結果將會很糟糕。關鍵是:這些「屬性」與'.gitattributes'無關。 – VonC
那麼這是否意味着答案是肯定的?任何關於2和/或3的想法? –