Rust如何处理Rc
秒和Arc
秒的"隔离岛"场景?
"隔离岛"是指对象A
包含指向对象B
的指针,而对象B
包含指向对象A
的指针,但在其他任何地方都没有指向这两个对象的指针.
Rust是否足够聪明,能够检测到这一点,还是会导致内存泄漏?
Rust如何处理Rc
秒和Arc
秒的"隔离岛"场景?
"隔离岛"是指对象A
包含指向对象B
的指针,而对象B
包含指向对象A
的指针,但在其他任何地方都没有指向这两个对象的指针.
Rust是否足够聪明,能够检测到这一点,还是会导致内存泄漏?
Rust没有垃圾收集器,也不会检测引用循环.如果你的程序创建了不可访问的引用循环,它们就会被泄露,你可以通过使用weak references或不使用共享所有权来避免它们.
请注意,创建引用循环的唯一方法是使用共享所有权和内部可变性.