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所指向的堆数据也会被清除。

深入学习

posted @   johnny_zhao  阅读(338)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2020-09-28 272. Closest Binary Search Tree Value II
2020-09-28 270. Closest Binary Search Tree Value
2020-09-28 277. Find the Celebrity
点击右上角即可分享
微信分享提示