在 Rust 中,智能指针是管理内存的高级工具,它们不仅提供指针功能,还包含额外的元数据和能力(如所有权管理、引用计数等)。以下是 Rust 主要智能指针的全面解析:
一、智能指针 vs 普通引用
| 特性 | 普通引用 (&T) |
智能指针 |
|---|---|---|
| 所有权 | 只借用数据 | 通常拥有数据所有权 |
| 功能 | 简单的内存访问 | 附加管理逻辑 |
| 内存位置 | 可指向栈或堆 | 通常管理堆内存 |
| 元数据 | 无 | 包含额外元数据 |

二、核心智能指针类型
1. Box<T>:堆分配的最简指针
-
作用:在堆上分配值,栈上存储指针
-
所有权:单一所有者
-
特点:
-
编译时已知大小(因为指针大小固定)
-
离开作用域自动释放内存
-
-
使用场景:
-
递归类型(如链表节点)
-
大数据转移所有权(避免复制)
-
trait 对象(
Box<dyn Trait>)
-
let boxed = Box::new(5); // 在堆上分配整数
let list = Cons(1, Box::new(Cons(2, Box::new(Nil)))); // 递归类型
2. Rc<T>:引用计数指针
-
作用:多所有权共享数据
-
所有权:多个不可变引用
-
特点:
-
单线程使用
-
运行时引用计数
- <
-

最低0.47元/天 解锁文章
42

被折叠的 条评论
为什么被折叠?



