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