C++
中的智能指针是用于管理动态分配内存的工具,能够自动释放内存,避免内存泄漏。C++11
引入了三种主要的智能指针:std::unique_ptr
、std::shared_ptr
和 std::weak_ptr
。它们都定义在 <memory>
头文件中。
std::unique_ptr
std::unique_ptr
是一种独占所有权的智能指针。同一时间只能有一个 unique_ptr
指向某个对象,当 unique_ptr
被销毁时,它所管理的对象也会被自动释放。
(1)独占所有权:不能复制,只能移动。
(2)轻量级:性能接近裸指针。
(3)适用场景:单一所有权的资源管理。
#include <iostream>
#include <memory> // for std::unique_ptr
int main() {
std::unique_ptr<int> ptr(new int(10)); // 创建一个 unique_ptr
std::cout << *ptr << std::endl; // 输出 10
// std::unique_ptr<int> ptr2 = ptr; // 错误:不能复制
std::unique_ptr<int