Rust 如何处理引用计数类型的 "island of isolation"(引用循环)场景?
How does Rust handle the "island of isolation" (cycles of references) scenario for reference-counted types?
Rust 如何处理 Rc
和 Arc
的 "island of isolation" 场景?
一个"island of isolation"是这样一种情况,其中对象A
包含一个指向对象B
的指针,而对象B
包含一个指向对象A
的指针,但是在其他任何地方都没有指向这两个对象的指针。
Rust 是否足够智能以检测到这一点,或者它是否会导致内存泄漏?
Rust 没有垃圾收集器,它不会检测引用循环。如果你的程序创建了不可访问的引用循环,它们就会被泄露,你应该避免它们,例如通过使用 weak references,或者首先不使用共享所有权。
请注意,创建引用循环的唯一方法是同时使用共享所有权和内部可变性。
Rust 如何处理 Rc
和 Arc
的 "island of isolation" 场景?
一个"island of isolation"是这样一种情况,其中对象A
包含一个指向对象B
的指针,而对象B
包含一个指向对象A
的指针,但是在其他任何地方都没有指向这两个对象的指针。
Rust 是否足够智能以检测到这一点,或者它是否会导致内存泄漏?
Rust 没有垃圾收集器,它不会检测引用循环。如果你的程序创建了不可访问的引用循环,它们就会被泄露,你应该避免它们,例如通过使用 weak references,或者首先不使用共享所有权。
请注意,创建引用循环的唯一方法是同时使用共享所有权和内部可变性。