C++智能指针使用详解

发布时间:2026/6/5 8:16:23

C++智能指针使用详解 智能指针概述智能指针是C标准库提供的类模板用于自动管理动态分配的内存防止内存泄漏。它们遵循RAII资源获取即初始化原则在对象生命周期结束时自动释放内存。主要智能指针类型std::unique_ptr独占所有权的智能指针不能复制只能移动。std::shared_ptr共享所有权的智能指针使用引用计数管理资源。std::weak_ptr弱引用指针不增加引用计数用于解决循环引用问题。智能指针的高级用法在容器中使用智能指针存 std::unique_ptr / std::shared_ptrclear/ erase时引用计数 -1如果计数为0自动释放内存完全不用手动 delete多态和智能指针自定义删除器最佳实践和注意事项使用建议常见错误总结C智能指针是现代C编程中必不可少的工具它们提供了自动内存管理帮助防止内存泄漏和其他资源管理错误。关键点总结std::unique_ptr用于独占所有权场景性能开销小std::shared_ptr用于共享所有权场景使用引用计数std::weak_ptr用于解决循环引用问题提供弱引用优先使用make_unique和make_shared更安全、更高效明确所有权语义在代码中清晰表达资源所有权意图正确使用智能指针可以大大简化内存管理提高代码的安全性和可维护性。析构函数谁持有谁谁先死被持有者后死。组合 / 持有关系析构智能指针父对象 持有 子对象的 shared_ptr子对象 不持有 父对象只持有 weak_ptr所以生命周期关系是父活着 → 子才能活着父死了 → 子才会死先析构子 → 再析构父只发生在栈上对象 成员对象的场景。日志顺序Parent 析构 → Child 析构本质和智能指针链一模一样依然是父先开始析构 → 子才被析构继承关系析构真正的「先子后父」只发生在继承只有继承关系析构 是 子类先析构父类后析构

相关新闻