2016-04-21 82 views
0

假設我有一個垃圾收集語言,它被編譯爲C並通過它彙編到程序集中。那麼,當它被編譯到C時垃圾收集是如何工作的?它變得完全確定性了嗎?還是作爲另一個定期運行並收集垃圾的程序包含在生成的程序中?這可能是一個非常簡單,即使不是很愚蠢的問題,但我想澄清一下。以C編譯語言收集垃圾

+0

你是什麼意思「編譯成C」? – jdarthenay

+0

與編譯爲C的方案實現類似,或者如果我沒有正確記得nim是垃圾收集的,就是nim實現。 – meguli

+0

如果我很好理解C代碼生成?在這種情況下,如果沒有人知道答案,也許你可以嘗試查看非常簡單的程序生成的C代碼。 – jdarthenay

回答

0

在iOS中使用ARC reference counting完成編譯語言中類似操作的一種方法。這在技術上不是垃圾收集,而是類似的東西。您需要定期搜索程序內存中已分配的指向堆的地址,以查看是否可以釋放內存。

0

Bohem gc exists;然而,如果你有一個在正確範圍內的整數是一個指向死對象的指針,整個圖可能會泄漏。 http://hboehm.info/gc/在所有不好的選擇。

1

儘管它正在編譯爲C,但這些實現通常會鏈接到原始語言的運行時庫中。該庫包含更高級別語言數據的垃圾回收器。用C來表示原始語言數據的數據結構包含垃圾回收器所需的附加字段。

他們可能使用的另一種技術是conservative garbage collection