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

销毁外层std::shared_ptr时,是否需手动重置其成员std::shared_ptr?

问题解答

不需要先手动重置mrSharedPtr->innerSharedPtr,直接调用mrSharedPtr.reset()就足够了,具体原因如下:

  • 当mrSharedPtr.reset()使其引用计数降至0时,MyClass的实例会被自动销毁。
  • innerSharedPtr作为MyClass的成员变量,在MyClass实例销毁过程中,它的析构函数会被自动触发,这会将其指向的InnerClass实例的引用计数减1。如果此时InnerClass的引用计数也降到0,对应的实例就会被自动释放,不会有内存残留。

至于引用计数的问题:重置后确实无法直接查看计数,但只要遵循shared_ptr的使用规范,完全不需要手动管理引用计数,它的自动机制会保证资源被正确回收。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:34:54