unique_ptr
是C++标准库提供的智能指针之一,具有以下特点:
-
独占所有权:
unique_ptr
独占指向对象的所有权,确保在任何时候只有一个unique_ptr
可以指向同一个对象。当unique_ptr
被销毁或转移所有权时,它会自动释放指向的对象,无需手动删除。 -
轻量高效:
unique_ptr
是一种轻量级的智能指针,通常与动态分配的单个对象(使用new
表达式分配)相关联。由于没有额外的开销,它比较高效。 -
不可复制:
unique_ptr
是不可复制的,即不能进行拷贝构造或赋值操作。这是为了避免多个指针同时管理同一个对象,从而避免悬空指针和内存泄漏。 -
可移动:
unique_ptr
支持移动语义,可以通过std::move
将所有权从一个unique_ptr
转移到另一个unique_ptr
。移动操作将转移所有权而不进行内存拷贝,提供了高效的资源管理。 -
自定义删除器:
unique_ptr
允许使用自定义的删除器来指定在释放对象时要执行的操作。删除器可以是函数指针、函数对象或Lambda表达式,允许在对象销毁时执行自定义清理操作。
总之,unique_ptr
提供了一种安全且高效地管理动态分配的单个对象的方法,通过独占所有权和移动语义,确保资源的正确释放和避免悬空指针问题。