是否可以用另一种语言为一种语言编写自动垃圾收集器?

Is it possible to write an automatic garbage collector for one language in another language?

以没有自动垃圾收集器的C编程语言为例。我遇到过其他 C 垃圾收集器,例如 Boehm-Demers-Weiser 垃圾收集器和其他实现。但是,它们都使用相同的语言 (C) 或 CPP。 Python 有一个用于 C 的 API,可用于在堆中创建 PyObjects,它还带有一个引用计数器。是否可以使用 Python 为 C 创建垃圾收集器?使用 CPython API 创建对象是否也会在嵌入式解释器中创建对象?它能以任何方式用于为 C 创建自动垃圾收集器吗?

以上如有不妥之处还请多多包涵。我是新手。

C 和 Python 是两种截然不同的语言。 C 是一种编译 语言,而Python 是解释

在编译语言(如 C 和 C++)中,源代码由编译器直接翻译成机器代码,然后在运行时由您的计算机直接执行 - 换句话说,您的计算机确实 源代码的内容。如果你写的 C 程序不好:

int main(){
    char *ptr = malloc(sizeof(char));
    ptr = NULL;
    return 0;
}

然后您的计算机将尽职尽责地分配一个 char 形状的内存块,将其位置存储在 ptr 中,然后被遗忘。垃圾收集环境会看到在行 ptr = NULL 中,分配的内存现在不可访问,因此它会释放分配的内存供其他程序使用,但在 C 中编译它会保留分配的内存直到程序退出。

Boehm-Demers-Weiser 垃圾收集实际上只是一大堆 C 代码,隐藏在模块中,用它自己的、安全的 GC_MALLOC 替换底层的、危险的 malloc 函数跟踪松散指针的函数,因此您不必这样做。

Python 不像 C。代码行由另一个程序(通常用 C 编写)解释,然后告诉计算机做你想让它做的事。底层代码(内存地址、指针分配和数组管理)完全隐藏在Python中。不可能编写一个 Python 程序来完成与 malloc 在 C 中所做的相同的事情。

简而言之:不,你不能告诉 Python 对 C 进行垃圾收集,因为 Python 解释器已经使用了进行垃圾收集的 C 程序。