智能指针是一种在 C++ 中管理动态分配内存的工具,可以帮助避免内存泄漏和提高程序的安全性。在 C++11 标准引入之后,C++ 提供了三种主要类型的智能指针,它们分别是 std::unique_ptr
、std::shared_ptr
和 std::weak_ptr
。这些智能指针有不同的所有权管理方式和适用场景。
1. std::unique_ptr
- 独占所有权:
std::unique_ptr
管理其所指向的对象,并且独占对该对象的访问权限。 - 特点:不能被复制,但可以通过移动语义转移所有权。当
std::unique_ptr
被销毁时,它所管理的对象也会被自动销毁。 - 适用场景:适用于需要独占所有权且生命周期明确的场景,如避免内存泄漏的最佳选择。
std::unique_ptr<int> ptr = std::