• Rust-智能指针:使用Box <T>指向堆上的数据


    最简单直接的智能指针是box,其类型是Box<T>。box允许你将一个值放在堆上而不是栈上。留在栈上的则是指向堆数据的指针。Rust中栈与堆的区别

    除了数据被储存在堆上而不是栈上之外,box没有性能损失。不过也没有很多额外的功能。

    使用Box<T>在堆上储存数据

    在讨论Box<T>的用例之前,我们学习一下语法以及如何与储存在Box<T>中的值进行交互。

    如下使用box在堆上储存一个i32值:

        let b = Box::new(5);
        println!("b is {}", b);

    这里定义了变量b,其值是一个指向被分配在堆上的值5的Box。在这个例子中,我们可以像数据是储存在栈上的那样访问box中的数据。正如任何拥有数据所有权的值那样,当像b这样的box在main的末尾离开作用域时,它将被释放。这个释放过程作用于box本身(位于栈上)和它所指向的数据(位于堆上)。

    Box<T> 类型是一个智能指针,因为它实现了 Deref trait,它允许 Box<T> 值被当作引用对待。当Box<T>值离开作用域时,由于Box<T>类型 Drop trait的实现,box所指向的堆数据也会被清除。

    深入学习

  • 相关阅读:
    Excel Formulas-Vlookup
    C#字符串与unicode互相转换
    string.IsNullOrWhiteSpace
    CREATE SEQUENCE sqlserver
    error CS1056
    WebExceptionStatus
    运维踩坑记
    C# 快捷命令
    sqlserver2019安装教程
    sql server 数据库mdf文件和log文件过大问题
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/15350355.html
Copyright © 2020-2023  润新知