可用的 C 智能指针实现及其比较 C 03 std::auto_ptr:在未来的 C 标准中已弃用。有限的垃圾收集、所有权复杂性以及无法在 STL 容器中使用。 std::auto_ptr_ref: 不是真正的智能指针;与 std::auto_ptr 结合使用以允许复制和赋值。 C 11 std::unique_ptr: 替换 std::auto_ptr。纠正 std::auto_ptr 的弱点,允许使用数组、左值保护以及在 STL 容器中使用。 std::shared_ptr: 引用计数智能指针。支持别名和指针算术。 std::weak_ptr: 对 std::shared_ptr 拥有的对象的非拥有引用。防止无限循环引用计数。 Boost boost::shared_ptr: 流行的共享引用计数智能指针。高性能和多功能性。 boost::weak_ptr: 对 boost::shared_ptr 的非拥有引用。 boost::scoped_ptr:简单的智能指针替代 boost::shared_ptr 且更少 boost::intrusive_ptr: 用于创建您自己的智能指针兼容类的自定义智能指针。 boost::shared_array: 共享智能指针数组。 boost::scoped_array: 数组的不可复制智能指针。 Qt QPointer:弱智能指针QObject 和派生类。已弃用。 QSharedDataPointer: 与 boost::intrusive_ptr 相当的强智能指针,具有线程安全性。 QExplicitlySharedDataPointer: QSharedDataPointer 2.0 版,具有增强功能控制 QSharedPointer: 原子引用计数、线程安全、可共享智能指针。 QWeakPointer: 对 a 的非拥有引用QSharedPointer. QScopedPointer: 基于 boost::scoped_ptr 的单所有者智能指针,适合异常安全代码和兼容性。