Rust开发之——什么是所有权(10)
一 概述
- 所有权的基本概念
- 栈(Stack)与堆(Heap)的区别
- 变量作用域与所有权
- 变量与数据的交互方式
- 函数与所有权
二 所有权的基本概念
2.1 概念
1 | 所有权(系统)是 Rust 最为与众不同的特性, |
2.2 内存管理方式
1 | -Rust 通过所有权系统管理内存,无需垃圾回收,编译器在编译时检查内存安全,运行时无额外开销。 |
2.3 所有权规则
1 | -规则 1:每个值(Value)有且仅有一个所有者(Owner)变量。 |
三 栈(Stack)与堆(Heap)的区别
特性 | 栈 | 堆 |
---|---|---|
存储结构 | 后进先出(LIFO),固定大小数据 | 动态分配,大小不固定 |
分配效率 | 快(直接压栈 / 出栈) | 慢(需查找空闲空间并记录地址) |
访问效率 | 快(直接通过地址访问) | 慢(需通过指针间接访问) |
所有权关联 | 变量离开作用域时自动释放 | 需通过所有权规则管理释放时机 |
四 变量作用域与所有权
4.1 作用域
1 | 1、概念 |
4.2 字符串类型对比
1 | -字符串字面值(如 "hello"):存储在栈上,不可变,编译时确定内容。 |
五 变量与数据的交互方式
5.1 移动(Move)
1 | 1、场景: |
5.2 克隆(Clone)
1 | 1、深拷贝: |
5.3 拷贝(Copy)
1 | -适用类型:栈上的简单类型(如整型、布尔、字符等),实现了Copy trait。 |
六 函数与所有权
6.1 参数传递
1 | -传递堆数据(如 String)时,所有权转移给函数参数,函数结束后参数被丢弃。 |
6.2 返回值
1 | 1、概念 |
七 参考
- Rust中文官网——什么是所有权?