簡體   English   中英

c++ 中的引用計數到底是什么意思?

[英]what exactly reference counting in c++ means?,

什么是引用計數? 特別是,C++ 是什么? 如果我們不處理它們,我們會面臨什么問題? 所有語言都需要引用計數嗎?

什么是引用計數? 特別是,C++ 是什么?

簡單來說,引用計數就是統計對一個object的引用。

通常, C++ 采用RAII技術。 其中,管理類型 object 的重新分配的能力與類型 object 本身相關聯。 這意味着用戶不必顯式管理 object 的生命周期及其釋放,執行此管理的功能內置於 object 本身。

此功能意味着 object 應該存在並保持有效,直到有利益相關者引用 object,這是通過引用計數實現的。 每次共享(復制)object 時,引用計數(通常是 class 類型中的成員)都會遞增,每次調用析構函數時,計數都會遞減,當計數達到 0 時,object 不會被任何人引用,它標志着它生命周期的結束,因此它被破壞了。

如果我們不處理它們,我們會面臨什么問題?

這將意味着不再有 RAII,以及無休止且經常出錯的手動資源管理。
簡而言之,編程噩夢。

所有語言都需要引用計數嗎?

語言不需要引用計數,但采用該技術可以為該語言的用戶提供非常簡單的使用和更少的工作量,因此大多數語言更喜歡使用它來為他們的用戶提供這些優勢。

引用計數是一種簡單但不完整的垃圾檢測方法。

當計數器達到零時,您可以釋放該 object。

但是如果沒有更多使用過的對象循環引用彼此,它們將永遠不會被釋放

考慮 a引用b,b引用a,但沒有其他引用a 或 b。 a 和 b 的引用計數仍為 1(= 在使用中)

引用計數垃圾回收是一種強大的管理技術 memory 有助於防止對象被意外刪除或多次刪除。 該技術不限於 C++ 代碼,盡管它的名稱與引用變量的 C++ 概念無關。 相反,該術語意味着我們維護對 object 的所有“擁有引用”的計數,並在該計數變為零時刪除 object。

引用計數 - 讓我們使用一個比喻。

你有耳朵。 你想要它在某個時候回來。

你得到一群人指着你的耳朵。 他們一指,你就數一數。

當數字歸零時——它就是你的了,你可以隨心所欲地使用它。

即把它從等式中取出(釋放回內存)。

順便提一句。 圓形的東西很難發現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM