智能指針是一種數據結構,其行為類似於指針,同時提供記憶體管理或綁定檢查等附加功能。
智能指針可跟蹤其指向的記憶體,還可用於管理其他資源,如Fils
句柄和網路連接。
智能指針最初用於C++語言。
引用也是一種指針,但除了引用數據之外,它沒有其他功能。引用由&
運算符表示。
智能指針提供的功能超出了參考提供的功能。 智能指針提供的最常見功能是“引用計數智能指針類型”。 此功能能夠通過跟蹤所有者來擁有多個數據所有者,如果沒有所有者,則可以清除數據。
引用是僅借用數據的指針,而智能指針是擁有它們指向的數據的指針。
智能指針的類型:
Box <T>
:Box <T>
是一個智能指針,指向在類型為T的堆上分配的數據,其中“T”是數據的類型。它用於將數據存儲在堆上而不是堆疊上。Deref <T>
:Deref <T>
是一個智能指針,用於自定義解除引用運算符(*
)的行為。Drop <T>
:Drop <T>
是一個智能指針,用於在變數超出範圍時從堆記憶體中釋放空間。Rc <T>
:Rc <T>
代表參考計數指針。它是一個智能指針,用於記錄存儲在堆上的值的引用數。RefCell <T>
:RefCell <T>
是一個智能指針,允許借用可變數據,即使數據是不可變的。這個過程被稱為內部可變性。