C++ 智能指针(Smart Pointer)是 C++11 引入的用于自动管理动态内存的模板类,其核心作用是通过RAII(资源获取即初始化)机制,在智能指针生命周期结束时自动释放所管理的内存,从而避免传统裸指针(Raw Pointer)可能导致的内存泄漏、重复释放、悬垂指针等问题。
智能指针通过 RAII(Resource Acquisition Is Initialization) idiom 来解决这些问题:
- 获取资源即初始化:在构造函数中获取资源(分配内存)。
- 释放资源即析构:在析构函数中自动释放资源。只要智能指针对象超出作用域,无论是因为正常执行还是异常,其析构函数都会被调用,从而保证资源被释放。
所有智能指针都定义在 头文件中。
1、std::unique_ptr - 独占所有权指针
std::unique_ptr 是独占式智能指针,其管理的资源只能被一个 unique_ptr 拥有,不允许拷贝(避免多个指针同时管理同一资源),但允许移动(转移所有权)。
1.1 基本用法
[code]#include #include using namespace std;class MyClass {public: MyClass(int id) : id(id) { cout |