2012-07-15 158 views
2

我曾經在幾篇文章中提到過Tcl使用引用計數來進行垃圾回收。我想知道這是什麼意思,因爲據我所知Tcl沒有指針或引用,所以每個變量只被引用一次。那究竟是什麼呢?Tcl內存管理

回答

3

這個想法是,Tcl有值的參考計數,沒有變量。

讓我們舉the wiki page on copy-on-write semantics

每個值(Tcl_Obj)的引用計數。無論何時將值傳遞給命令或分配給變量,引用計數都會遞增並且不會進行復制。當值被改變時,實現首先檢查引用計數。如果計數爲1,那麼沒有其他參考值可以在適當的位置進行更改。如果計數大於1,則還有其他參考。如果值被改變,那麼這些參考也將被改變。爲了防止這個值的副本(新引用計數爲1)並且副本被更改到位。

在這個解釋中唯一缺少的是當值的引用計數下降到1時,該值被破壞。

對於硬核信息,請閱讀Tcl_Obj manual pagethesediscussions的「對象的存儲管理」部分。