You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++类中unique_ptr重复调用make_unique是否会引发内存无限增长?

关于std::unique_ptr赋值时的内存管理问题

不会出现内存无限增长的情况,原因很明确:std::unique_ptr的赋值运算符会自动释放旧内存。

std::unique_ptr是C++的独占式智能指针,核心作用就是自动管理所指向资源的生命周期。当你执行mStructPtr = std::make_unique<StructExample>(100, 200);时,会按以下逻辑执行:

  1. std::make_unique<StructExample>(100, 200)分配新内存,构造StructExample对象。
  2. 触发unique_ptr的赋值运算符,此时如果当前unique_ptr持有旧指针,会自动调用delete释放旧内存。
  3. 最后接管新对象的所有权,让mStructPtr指向新创建的对象。

回到你提供的代码场景:while循环里每执行一次这条赋值语句,旧的StructExample对象都会被自动释放,不会留下未释放的内存,自然不会出现内存无限增长的问题。

这也是智能指针取代手动new/delete的核心优势——无需开发者手动跟踪内存释放,从根源上避免了遗忘delete导致的内存泄漏。

内容的提问来源于stack exchange,提问作者Nitron_707

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 16:03:16