Rust如何处理Rc
s和Arc
s的"隔离岛"场景?
"隔离岛"是指对象A
包含指向对象B
的指针,对象B
包含指向对象A
的指针,但在其他任何位置都没有指向这两个对象的指针。
Rust是否足够聪明,能够检测到这一点,或者它是否会导致内存泄漏?
Rust没有垃圾收集器,也不会检测引用循环。如果你的程序创建了不可访问的引用循环,它们就会被泄露,你可以避免它们,例如使用弱引用,或者一开始就不使用共享所有权。
请注意,创建引用循环的唯一方法是同时使用共享所有权和内部可变性。
另请参阅《铁锈》一书中关于参考周期的章节。