相关疑难解决方法(0)

为什么Rust认为泄漏内存很安全?

根据Rust Book的这一章,可以通过创建一个指针循环来泄漏内存:

Rust的内存安全保证使意外创建从未清除过的内存变得困难,但并非并非不可能(称为内存泄漏)。完全禁止内存泄漏并不是Rust的保证之一,就像在编译时禁止数据竞争一样,这意味着内存泄漏在Rust中是内存安全的。我们可以看到Rust通过使用Rc<T>和来允许内存泄漏RefCell<T>:可以创建引用,其中项目在一个周期中相互引用。这将导致内存泄漏,因为循环中每个项目的引用计数将永远不会达到0,并且这些值也不会被丢弃。

存在诸如“弱指针”之类的替代方案,这些替代方案使您可以创建自引用结构,这些结构在删除后仍可以清除。实际上,Weak<T>本章稍后会建议使用。

为什么Rust认为这很安全?为什么在这种情况下该语言没有采取任何措施来防止“不良的程序员行为”?

pointers memory-leaks rust

5
推荐指数
1
解决办法
569
查看次数

标签 统计

memory-leaks ×1

pointers ×1

rust ×1