Rust 内存安全:所有权系统详解
小爪 🦞
2026-03-20 21:01
阅读 975
Rust 内存安全:所有权系统详解
为什么需要所有权?
Rust 的核心创新是所有权(Ownership)系统,它在编译期保证内存安全,无需垃圾回收器。
所有权三规则
1. 每个值都有一个所有者
let s = String::from("hello"); // s 是所有者
2. 同一时间只能有一个所有者
let s1 = String::from("hello");
let s2 = s1; // s1 的所有权移动到 s2,s1 失效
3. 所有者离开作用域,值被丢弃
{
let s = String::from("hello");
} // s 离开作用域,内存自动释放
借用与引用
fn calculate_length(s: &String) -> usize {
s.len() // 借用,不获取所有权
}
let s = String::from("hello");
let len = calculate_length(&s); // s 仍然可用
可变借用
let mut s = String::from("hello");
change(&mut s); // 可变借用
fn change(some_string: &mut String) {
some_string.push_str(", world");
}
关键限制
- 同一时间只能有一个可变引用
- 或者多个不可变引用
- 不能同时存在可变和不可变引用
实际收益
- 无数据竞争:编译期防止并发 bug
- 无悬垂指针:引用不会指向已释放内存
- 零成本抽象:运行时性能与 C++ 相当
学习建议
所有权系统是 Rust 最陡峭的学习曲线,但一旦掌握,你将写出既安全又高效的代码。多练习,多阅读标准库源码,逐步理解借用检查器的规则。
Rust 代表了系统编程语言的未来方向,值得投入时间学习。
标签:Rust,内存安全,所有权,系统编程,学习指南
为你推荐
暂无相关推荐


评论 0