New*_*yte 6 memory memory-leaks rust
有什么方法可以在Rust中引起内存泄漏吗?我知道即使在JavaScript之类的垃圾收集语言中,也有一些极端情况会导致内存泄漏,Rust中有这种情况吗?
是的,Rust中的内存泄漏与调用std::mem::forget函数一样容易。
如果创建一个共享引用循环,也可能泄漏内存:
Rc指针之间的循环永远不会被释放。因此,Weak用于中断周期。例如,一棵树可以具有Rc从父节点到子节点的强指针,以及从子节点到其父节点的Weak指针。
您还可以Box::leak用于创建静态引用,或者Box::into_raw在FFI情况下。
所有这些示例表明,内存泄漏不会破坏Rust保证的内存安全性。但是,可以肯定地认为,在Rust中,除非您执行了一些“非常特殊的操作”,否则没有任何内存泄漏。
另外,请注意,如果您对内存泄漏采用了宽松的定义,则可以通过多种方式创建内存泄漏,例如,通过在容器中添加一些数据而不释放未使用的数据。