2012-05-07 103 views
3

我不確定是否嚴格說,但我想把共享ptr作爲垃圾收集策略。關於共享ptr

我在這裏兩個問題:

  1. 當共享適當PTR垃圾收集;當其他策略如標記掃描?
  2. 在C中是否有任何lib實現共享ptr?

謝謝。

+0

你是什麼意思把共享ptr作爲垃圾收集策略?你的意思是比較共享指針(稱爲GC世界中的引用計數)和標記掃描?我認爲boost實現共享指針:http://www.boost.org/doc/libs/1_49_0/libs/smart_ptr/shared_ptr.htm。 閱讀更多關於這裏:http://stackoverflow.com/questions/417481/pointers-smart-pointers-or-shared-pointers – smichak

+0

@smichak是的,我想看看不同的垃圾收集技術之間的一些比較Q1。 –

回答

3

如果您想在C中進行垃圾回收,請查看Hans Boehm垃圾回收庫。

共享ptr刪除了處理對象刪除的大部分必要性,但有很多複雜性:只有一個共享指針可以一次保存指針。您可能還想看看Boost's smart_ptr pointer handling和相關課程。

但是shared_ptr和Boost是C++。你將很難在C中實現這一點:shared_ptr依靠運算符重載來實現它的魔力。如果沒有操作符重載,你無法知道某個地方是否有人持有指針副本。 (這在C++中也是一個問題,但是如果在整個代碼中使用shared_ptr,操作符重載會降低風險。)

我肯定會推薦Hans Boehm。

+0

這個庫很酷,我會檢查它。我想在獲得lib之前得到一些想法。謝謝。 –