2016-04-21 68 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