2013-12-19 49 views
0

我有一個項目,我必須在C++中實現垃圾收集器。 現在我必須提供類圖,但我不知道該怎麼做。C++中的垃圾收集器

有人可以解釋我什麼垃圾收集器呢?谷歌沒有幫助我!我發現很多類和變量都有很多。

我們考慮一個簡單的語言中,只有兩個預定義 類,詮釋和Real(如Java中),在4首或8個字節分配。

  • 我聲明如int一個,真正b

  • 賦值語句(X = Y)

  • return語句(返回X)

- 當聲明一個對象,從存儲區分配相應的動態分配的合適大小和空閒地址,對象的引用計數器爲初始值化爲1

- 每個賦值,增量引用計數對象。同樣的事情發生在經過存在於函數值,以及 指令返回

- 每個時間函數體端部,其中有一個對象的聲明,它遞減基準計數器

- 當對象的引用計數已經達到0時,它釋放內存

我應該實現多少個類?只有2個預定義的類...每個類都必須有一個變量「counter」,或者有一個3-class類有櫃檯?

+3

這被稱爲「引用計數」,而不是「垃圾收集」。 – dasblinkenlight

+0

注意dasblinkenlight的評論:使用'std :: shared_ptr' – Bathsheba

+1

@dasblinkenlight:我會認爲「引用計數」可以被認爲是GC的類型/組件... –

回答

1

垃圾收集器是一種週期性服務,它在不再使用時會自動釋放分配的內存。

注意,它不處理棧上分配的變量,如

int a; 
char b; 

但在堆中分配的變量(即使用new語句分配的)。

實際上,當你有一個垃圾回收器時,你不需要明確delete分配的變量,因爲垃圾回收器會爲你做這件事。

+0

除「定期服務」之外,您有關於正確的定義。理論上它可以應用於自動(堆棧)變量,但不適用於任何實際的實現。 –

+0

@Jefffrey - 他不是指堆棧。 –