美文网首页
生命周期与引用有效性

生命周期与引用有效性

作者: allenhaozi | 来源:发表于2020-04-09 19:47 被阅读0次
&i32             // 引用
&'a i32         // 带有显式生命周期的引用 
&'a mut i32  // 带有显式生命周期的可变引用

泛型生命周期参数需 要声明在函数名和参数列表间的尖括号中。这里我们想要告诉 Rust 关于参数中的引用和返回 值之间的限制是他们都必须拥有相同的生命周期

正确的

fn main() {
       let string1 = String::from("long string is long");
       {
             let string2 = String::from("xyz");
             let result = longest(string1.as_str(), string2.as_str()); 
             println!("The longest string is {}", result);
       } 
}
  • string1 直到外部作用域结束都是有效的
  • string2 则在内部作用域中是有 效的
  • result 则引用了一些直到内部作用域结束都是有效的值

错误的

fn main() {
    let string1 = String::from("long string is long");
    let result;
    {
         let string2 = String::from("xyz");
         result = longest(string1.as_str(), string2.as_str()); }
         println!("The longest string is {}", result);
    }
}
  • longest函数返回的引用的生命周期与传入参数的生命周期中较短那个保持一致
  • 即与string2保持一致, 这样result和string2的生命周期不一致

相关文章

  • 什么是生命周期

    生命周期与引用有效性[https://kaisery.github.io/trpl-zh-cn/ch10-03-l...

  • 生命周期与引用有效性

    泛型生命周期参数需 要声明在函数名和参数列表间的尖括号中。这里我们想要告诉 Rust 关于参数中的引用和返回 值之...

  • 2018-02-25 Android应用优化总结

    内存泄漏 最常见也是最严重的 :持有Activity 与Context引用,生命周期本该短于应用生命周期,该回收的...

  • handler内存泄露

    长生命周期引用短生命周期对象,gc来时短生命周期对象gc不可达。 mainthread 持有mainlooper持...

  • JVM整理相关目录

    一、初识类的加载过程 主要介绍类的加载过程、以及java虚拟机生命周期的结束方式、符号引用与直接引用的区别 地址:...

  • IOS 内存管理

    引用类型 强引用强引用是默认的引用类型,被强引用的内存不会被释放,强引用的引用计数会+1,从而扩展对象的生命周期 ...

  • rust笔记

    引用的生命周期不能长于引用的对象,不能出现野指针。有借有还 生命周期注释分三步,声明,定义,使用。 只有从参数派生...

  • 软件生命周期模型及测试工作梳理

    一、软件生命周期简介 对于软件生命周期的定义引用百度百科:软件生命周期(SDLC,Systems Developm...

  • iOS内存管理初探 – 引用计数、AutoRelease与ARC

    引用计数式内存管理 引用计数 iOS通过引用计数管理对象的生命周期,每个对象有其引用计数。 对象被强引用时引用计数...

  • 内存优化之内存泄漏

    1.为什么会导致内存泄漏? 长生命周期持有对短生命周期对象的引用,导致对无用对象的引用一直未被释放,就会导致内存泄...

网友评论

      本文标题:生命周期与引用有效性

      本文链接:https://www.haomeiwen.com/subject/xmxhmhtx.html