Avatar ·

Rust中用什么替代垃圾回收器来管理内存?

你好!我刚开始在Java和Python之后学习Rust,遇到了一个困惑。在Java和Python中有垃圾回收器(GC),当对象不再需要时会自动释放内存。但我读到Rust没有GC。那么Rust在没有垃圾回收器的情况下如何管理内存?难道我必须像在C中那样手动调用`free()`或`delete`吗?这很不方便且容易导致内存泄漏! 下面是我写的一个简单示例,试图理解会发生什么: ```rust fn main() { let s1 = String::from("Привет"); let s2 = s1; // 我期望像Java中那样进行复制 println!("{}", s1); // 这无法编译!错误:borrow of moved value } ``` 我不明白为什么在赋值给`s2`后`s1`不再可用。在Java中,`s2`只是指向同一个字符串,而`s1`仍然有效。什么是“move”,它与没有GC有什么关系?Rust如何在没有垃圾回收器的情况下保证内存安全?请为新手解释一下。 另外,我听说过“所