深入理解Rust中的所有权机制
1. 栈与堆内存管理基础
在程序运行中,栈和堆是两种重要的内存区域。栈内存的分配和释放速度快,因为数据的大小在编译时已知,且按顺序存储和移除。而堆内存的分配则需要更多的操作,分配器首先要找到足够大的空间来存放数据,还要进行记录以便后续分配。
访问堆上的数据比访问栈上的数据慢,因为需要通过指针定位。现代CPU在内存中移动较少时性能更佳,就像餐厅服务员应先完成一桌的所有订单再去下一桌,处理器处理相邻的数据(如栈上的数据)比处理分散的数据(如堆上的数据)性能更好。而且,分配大量堆空间也可能需要一些时间。
当代码调用函数时,传递给函数的值(可能包括基于堆的指针)和函数的局部变量会被放入栈中。函数执行完毕后,这些值会从栈中移除。
2. 所有权的重要概念和规则
- 重要概念 :
- “所有者”可以根据变量的可变性修改其所有权值。
- 变量的所有权可以转移到另一个变量。
- 在Rust中,所有权只是一种语义。
- 所有权概念确保了安全性。
- 规则 :
- 在Rust中,每个值都有一个变量作为其所有者。
- 任何时刻,一个值只能有一个所有者。
- 当所有者离开作用域时,值会被销毁。
下面是一个简单的表格总结所有权规则:
| 规则 | 描述 |
超级会员免费看
订阅专栏 解锁全文
1401

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



