指针 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 不可变指针

相关问题