在C++中,智能指针(Smart Pointers)是一种用于自动管理动态内存的对象,它们确保动态分配的内存能够在不再需要时自动释放,从而避免了内存泄漏问题。智能指针主要包含在C++标准库的 <memory>
头文件中。
常见的智能指针类型
-
std::unique_ptr
:- 唯一所有权:一个对象只能由一个
std::unique_ptr
拥有,不能被拷贝。 - 转移所有权:你可以通过
std::move
将所有权从一个std::unique_ptr
转移到另一个。 - 使用场景:当你希望明确地表示某个对象的唯一所有权,并且对象的生命周期应该由该指针决定时使用。
std::unique_ptr<int> p1 = std::make_unique<int>(10); std::unique_ptr<int> p2 = std::move(p1); // p1 不能再访问该内存
- 唯一所有权:一个对象只能由一个
-
std::shared_ptr
:- 共享所有权:多个
std::shared_ptr
可以共享同一个对象,只有当最后一个shared_ptr
被销毁时,该对象的内存才会被释放。 - <
- 共享所有权:多个