智能指针是一种数据结构,其行为类似于指针,同时提供内存管理或绑定检查等附加功能。
智能指针可跟踪其指向的内存,还可用于管理其他资源,如Fils
句柄和网络连接。
智能指针最初用于C++语言。
引用也是一种指针,但除了引用数据之外,它没有其他功能。引用由&
运算符表示。
智能指针提供的功能超出了参考提供的功能。 智能指针提供的最常见功能是“引用计数智能指针类型”。 此功能能够通过跟踪所有者来拥有多个数据所有者,如果没有所有者,则可以清除数据。
引用是仅借用数据的指针,而智能指针是拥有它们指向的数据的指针。
智能指针的类型:
Box <T>
:Box <T>
是一个智能指针,指向在类型为T的堆上分配的数据,其中“T”是数据的类型。它用于将数据存储在堆上而不是堆栈上。Deref <T>
:Deref <T>
是一个智能指针,用于自定义解除引用运算符(*
)的行为。Drop <T>
:Drop <T>
是一个智能指针,用于在变量超出范围时从堆内存中释放空间。Rc <T>
:Rc <T>
代表参考计数指针。它是一个智能指针,用于记录存储在堆上的值的引用数。RefCell <T>
:RefCell <T>
是一个智能指针,允许借用可变数据,即使数据是不可变的。这个过程被称为内部可变性。