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