在 C++11 及其之后的标准中,智能指针(Smart Pointers)是管理动态内存的核心工具。它们基于 RAII(资源获取即初始化)原则,能够自动释放内存,从而有效避免内存泄漏和悬空指针问题。 C++ 标准库提供了三种主要的智能指针:、 和 。它们的区别主要在于所有权模型和底层机制。 --- 1. (独占所有权) 核心概念 代表独占式(Exclusive)的所有权。同一时刻,只能有一个 指向同一个动态分配的对象。当 被销毁(离开作用域)时,它所指向的对象也会被自动销毁。 特点与机制 不可复制:不能通过赋值或拷贝构造函数复制 (禁用了 copy 语义)。 可移动:可以通过 将所有权从一个 转移到另一个(启用了 move 语义)。 零开销:在默认情况下, 的大小和裸指针(raw pointer)完全一样,几乎没有性能开销。 适用场景 局部动态对象:在函数内部需要动态分配内存,且不需要与其他部分共享时(这是最常见的场景)。 作为类的成员变量:当一个类需要管理一个生命周期与自己绑定的动态对象时。 工厂模式的返回值:函数返回一个动态创建的对象,并把内存管理权交接给调用者。 代码示例 ...