如果说异常安全是 C++ 资源管理的"正确性底线",那么智能指针就是将这条底线从"依赖程序员纪律"内化为"类型系统强制保证"的关键机制。C++11 彻底终结了 std::auto_ptr 的历史欠账,引入了 unique_ptr、shared_ptr 和 weak_ptr 三件套,并用移动语义解决了"独占所有权"的表达问题。
本文从 RAII 的根本原则出发,逐一拆解这三种智能指针的设计取舍、内存布局细节,以及那些编译器不报错但运行时必定翻车的陷阱。
2026/5/6大约 6 分钟