是否有可能导致Rust中的内存泄漏?

问题描述 投票:4回答:2

在Rust中有没有导致内存泄漏的方法?我知道即使在像垃圾一样的JavaScript语言中也存在内存泄漏的边缘情况,Rust中是否有这样的情况?

memory memory-leaks rust
2个回答
7
投票

是的,在Rust中泄漏内存就像调用std::mem::forget函数一样简单。

如果你创建一个shared references循环,你也可以泄漏内存:

Rc指针之间的循环永远不会被释放。出于这个原因,Weak用于打破周期。例如,一棵树可以有从父节点到子节点的强Rc指针,以及从孩子们回到父母的Weak指针。

您必须注意,内存泄漏不会冒犯Rust保证的内存安全性。但是,可以安全地假设在Rust中,你没有任何内存泄漏,除非你做了一些非常“异国情调”的事情。


1
投票

来自book

Rust的内存安全保证使得意外创建永不清理的内存(称为内存泄漏)变得困难,但并非不可能。完全防止内存泄漏不是Rust的保证之一,就像在编译时禁止数据竞争一样,这意味着内存泄漏在Rust中是内存安全的。

所以答案是肯定的。您的代码中可能存在内存泄漏,生锈编译器不会抱怨它。

© www.soinside.com 2019 - 2024. All rights reserved.