【发布时间】:2014-12-26 21:23:41
【问题描述】:
The Rust Programming Language, first edition 说 Rust 没有垃圾收集器:
它在没有垃圾收集器的情况下维持这些目标
但是,在discussing choosing your guarantees 中还说:
Rc<T>是一个引用计数指针。换句话说,这让我们拥有多个指向同一数据的“拥有”指针,并且当所有指针超出范围时,数据将被删除(将运行析构函数)。
据我了解,这正是指针在像 Python 这样的垃圾收集语言中的工作方式。
我认为垃圾收集是任何不需要手动释放动态分配内存的过程。但是,我想我不明白 Rust 指南认为垃圾收集是什么。
【问题讨论】:
-
您的定义将“垃圾收集”本身与“自动内存管理”混为一谈。自动内存管理可以指代任何数量的非手动内存管理方法。垃圾回收就是这样一种方法:en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29
-
据我所知,关于引用计数是否算作垃圾收集的一种形式,从来没有真正达成过共识。即使是这样,它也与其他形式如此不同,以至于比较没有用。如果您将标准库中可选的 RAII 驱动的引用计数智能指针视为 Rust 被垃圾收集,那么 C++ 也被垃圾收集。
-
这是大多数情况下在 Python 中指针的工作方式。除了引用计数,Python 还有一个用于引用循环的后备 GC。有关参考周期的更多信息:Geeks for geeks.
标签: pointers garbage-collection rust