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

shared_ptr销毁时引用计数与自定义删除器的执行顺序及计数值疑问

shared_ptr引用计数与自定义删除器的执行顺序问题

问题1:引用计数是在自定义删除器执行之前还是之后递减?

  • 引用计数先递减,只有当递减后的计数变为0时,才会触发自定义删除器的执行。

问题2:带有自定义删除器的shared_ptr销毁时,删除器执行过程中引用计数是1还是0?是否有C++标准保证?

  • 执行删除器的过程中,引用计数已经是0。
  • 这是有C标准明确保证的:从C11开始,shared_ptr的析构逻辑被标准化——当shared_ptr对象被销毁时,首先将关联的引用计数原子减1;若减后计数为0,则调用对应的删除器来销毁托管对象。也就是说,删除器的调用时机是在计数已经降到0之后,因此执行删除器时计数必然是0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 07:07:01