是的,在Rust中泄漏内存就像调用std::mem::forget
函数一样简单.
如果创建的周期为shared references,也可能会泄漏内存:
Rc
个指针之间的循环永远不会被释放.因此,Weak
用于中断循环.例如,一棵树可以有Rc
个从父 node 到子 node 的强指针,以及Weak
个从子 node 到父 node 的强指针.
也可以使用Box::leak
创建静态引用,或者在FFI的情况下使用Box::into_raw
.
实际上,在系统编程语言中,您需要能够创建内存泄漏,否则,例如在FFI情况下,您的资源在被发送到另一种语言中使用后将被释放.
所有这些例子都表明,内存泄漏不会 destruct 由 rust 迹保证的内存安全.然而,可以安全地假设,在Rust中,您没有任何内存泄漏,除非您做了非常具体的事情.
此外,请注意,如果对内存泄漏采用松散的定义,则有无限种方法可以创建内存泄漏,例如,在容器中添加一些数据,而不释放未使用的数据.