)
unique_ptr 适用于哪些使用场景?为什么?unique_ptr的核心特性是独占式所有权,不支持拷贝构造与拷贝赋值,仅支持移动语义转移资源管理权,无额外引用计数开销,性能接近裸指针,基于 RAII 自动释放资源,这些特性决定了它优先用于资源归属唯一、不需要多方共享的场景,也是现代 C++ 中应当优先选择的智能指针。最典型的场景是函数内部创建临时堆对象。函数内通过make_unique创建对象,在函数作用域结束时 unique_ptr 自动析构释放内存,即使中间出现异常、提前 return,栈上的 unique_ptr 也一定会触发析构,不会出现裸指针容易遗漏释放的问题。这类场景下资源生命周期和当前作用域强绑定,不需要共享,unique_ptr 零开销的优势可以充分发挥。第二个场景是作为容器的元素。vector、list 等 STL 容器存储堆对象时,如果资源不需要多地方共享,直接存放 unique_ptr。容器扩容、元素销毁时会自动释放底层资源,相比裸指针不需要手动遍历释放,同时不会产生 shared_ptr 引用计数的性能损耗。容器不支持直接拷贝 unique_ptr,但可以通过 std::move 完成元素转移,符合独占语义。第三个场景是工厂函数返回动态创建的对象。工厂函数在堆上构造对象,返回 unique_ptr,把资源所有权转移给调用方。这种方式可以天然避免裸指针返回带来的所有权模糊问题,调用方不需要额外记忆释放规则,当接收的 unique_ptr 离开作用域资源自动回收,同时也可以继续通过 move 把资源继续传递到其他模块。第四个场景是管理非内存资源,配合自定义删