在Rust中有没有导致内存泄漏的方法?我知道即使在像垃圾一样的JavaScript语言中也存在内存泄漏的边缘情况,Rust中是否有这样的情况?
是的,在Rust中泄漏内存就像调用std::mem::forget
函数一样简单。
如果你创建一个shared references循环,你也可以泄漏内存:
Rc
指针之间的循环永远不会被释放。出于这个原因,Weak
用于打破周期。例如,一棵树可以有从父节点到子节点的强Rc
指针,以及从孩子们回到父母的Weak
指针。
您必须注意,内存泄漏不会冒犯Rust保证的内存安全性。但是,可以安全地假设在Rust中,你没有任何内存泄漏,除非你做了一些非常“异国情调”的事情。
来自book
Rust的内存安全保证使得意外创建永不清理的内存(称为内存泄漏)变得困难,但并非不可能。完全防止内存泄漏不是Rust的保证之一,就像在编译时禁止数据竞争一样,这意味着内存泄漏在Rust中是内存安全的。
所以答案是肯定的。您的代码中可能存在内存泄漏,生锈编译器不会抱怨它。