用智能指针+RAII可解决90%内存泄漏问题,核心是让对象自主管理生命周期;优先用std::unique_ptr(独占)、std::shared_ptr(共享,防循环引用需weak_ptr),遵循RAII原则统一资源获取与释放。

用智能指针 + RAII,基本就能绕开 90% 的 C++ 内存泄漏问题。核心不是“记得 delete”,而是“让对象自己管好自己”的生命周期。
优先用 std::unique_ptr 管理独占资源
它默认禁止拷贝,只支持移动,天然对应“一块内存只归一个所有者”的场景。构造时接管原始指针,析构时自动 delete —— 不用写 delete,也不会忘。
- 创建:用 std::make_unique
() ,比 new 更安全(异常安全、无裸 new) - 传递:函数参数尽量用值传递(移动语义)或 const std::unique_ptr&(只读访问)
- 释放:不用手动 reset() 或 release(),离开作用域就自动清理
例:auto p = std::make_unique
共享所有权?选 std::shared_ptr,但要防循环引用
多个对象需要共同持有同一块内存时用它,内部带引用计数。但两个 shared_ptr 相互持有(比如父子节点互相存对方的 shared_ptr),会导致计数永远不为 0,内存永远不释放。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~