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