unique_ptr智能指针介绍

kongyijin / 2023-05-14 / 原文

unique_ptr是C++标准库提供的智能指针之一,具有以下特点:

  1. 独占所有权:unique_ptr独占指向对象的所有权,确保在任何时候只有一个unique_ptr可以指向同一个对象。当unique_ptr被销毁或转移所有权时,它会自动释放指向的对象,无需手动删除。

  2. 轻量高效:unique_ptr是一种轻量级的智能指针,通常与动态分配的单个对象(使用new表达式分配)相关联。由于没有额外的开销,它比较高效。

  3. 不可复制:unique_ptr是不可复制的,即不能进行拷贝构造或赋值操作。这是为了避免多个指针同时管理同一个对象,从而避免悬空指针和内存泄漏。

  4. 可移动:unique_ptr支持移动语义,可以通过std::move将所有权从一个unique_ptr转移到另一个unique_ptr。移动操作将转移所有权而不进行内存拷贝,提供了高效的资源管理。

  5. 自定义删除器:unique_ptr允许使用自定义的删除器来指定在释放对象时要执行的操作。删除器可以是函数指针、函数对象或Lambda表达式,允许在对象销毁时执行自定义清理操作。

总之,unique_ptr提供了一种安全且高效地管理动态分配的单个对象的方法,通过独占所有权移动语义,确保资源的正确释放和避免悬空指针问题。