21_rust_生命周期

发布时间 2023-10-27 00:42:07作者: UFOFCZ

生命周期

生命周期应是rust语言最与众不同的概念。

  • rust的每个引用都有自己的生命周期。
  • 生命周期:引用保持有效的作用域。
  • 大多数情况:生命周期是隐式的、可被推断的。
  • 当引用的生命周期可能以不同的方式相互关联时,需要手动标注生命周期。

生命周期存在的目的:避免悬垂引用(dangling reference)
如:

fn main() {
  let r;
  {
    let x = 5;
    r = &x; // 编译报错
  }
  println!("{}", r);
}

这里编译报错,因为当最后一行使用r的时候的,r所指向的x已经释放了,生命周期已结束,再继续使用r将可能访问到已释放的内存的错误。rust采用了借用检查器来检查内存问题。

借用检查器

rust编译器的借用检查器:比较作用域来判断所有的借用是否合法。