指针 point
引用
- 引用在退出作用域时并不会自动释放任何资源
- 引用可以是指向堆或者栈的任何数据类型
- 引用不能指向 null
- 引用默认是不可变的,
&T
, 类似于C中的const T*
- 可变引用要写成
&mut T
, 类似于C中的T*
- 会在编译期检查引用的所有权及生命周期
Box
使用Box::new()
在堆上创建值.
#![allow(unused)] fn main() { let b = Box::new(42); }
当 b
的作用域结束时, 会自动释放在堆上的内存.
原始指针 Raw Pointer
Raw 指针完全类似于C中的指针, 它是不安全的, 也可以是 null. 也会出现C语言中的指针的
问题, 比如指向已被释放了的内存. 所以操作 Raw 指针时需要在 unsafe
代码块中进行.
*mut T
可变指针*const T
不可变指针