Time: 20190921
所有权是Rust中最独特的特征,有了它就能保证Rust内存安全,且无需垃圾回收机制。因此,理解Rust的所有权机制非常重要。和所有权一起讲到的其他几个概念是:
- 引用,借用
- 切片
什么是所有权
Rust语言的核心特征。这个概念解释起来并不复杂,但是对于后续的Rust语言学习有深远的影响。
不管什么编程语言,运行时都需要管理内存的使用方式。有些语言提供了垃圾回收机制,该机制会经常去查看不再使用的内存,然后在恰当的时机回收它们。
在一些语言中,内存管理需要交给程序员,手动分配和回收内存。
Rust用的是第三种方式:内存由所有权系统以及一些规则来管理,这些规则是编译器在编译时检查。
所有权这种特性不会降低程序运行时的效率。
所有权这种概念对很多人都是一个新的概念,因此花时间了解它的含义很有必要。
理解了所有权,就为历届Rust为何独一无二打下了坚实的基础。
我们将从字符串相关视角来学习所有权。
栈,堆
系统编程语言需要我们了解栈和堆的使用方式。
栈和堆都是运行时可以在代码中使用的内存空间,只是组织方式有所不同。
栈的基本特性就是后入先出,一般有两种基本操作:
- push:压栈,存储数据
- pop:出栈,弹出数据
栈上的所有数据都必须有确定的,已知的大小。如果是编译期不确定的,或者会在运行时变化的数据都需要存在堆上。
堆比栈的组织性要少很多,当把数据存储到堆上时,首先需要请求分配一块空间。操作系统会在堆上寻找足够大的可用的空间,将其标记为使用中,并返回一个指针,这就是该位置的地址。这个过程称作在堆上分配内存