頭條地址:https://www.ixigua.com/i677586170644791348...
B站地址:https://www.bilibili.com/video/av81202308/
1、最簡單最直接的智慧指標是box,其型別為Box。box允許將值放在堆上而不是棧上,留著棧上的則是指向堆資料的指標。除了資料被儲存在堆上外,box沒有任何效能損失。
2、box適合用於如下場景:
- 當有一個在編譯時未知大小的型別,而又需要再確切大小的上下文中使用這個型別值的時候;(舉例子:在一個list環境下,存放資料,但是每個元素的大小在編譯時又不確定)
- 當有大量資料並希望在確保資料不被拷貝的情況下轉移所有權的時候;
- 當希望擁有一個值並只關心它的型別是否實現了特定trait而不是其具體型別時。
3、使用Box在堆上儲存資料:
fn main() {
let b = Box::new(5); //此時5儲存在堆上而不是棧上,b本身儲存於棧上
println!("b = {}", b); //離開作用域時同時清楚堆和棧上的資料
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結