a 的控制块shared_ptr
在至少存在一个时保持活动状态weak_ptr
。如果共享指针是用它创建的make_shared
,则意味着对象的整个内存都保持分配状态。(对象本身已被适当地破坏,但由于控制块和对象的内存被分配在一个块make_shared
中,因此它们只能一起释放。)
我的理解正确吗?
这种行为似乎代表了一个问题,例如在著名的“缓存示例”中。对象的内存将永远分配。
它在任何实际情况下都有问题吗?在这种情况下是否shared_ptr
应该使用构造函数创建(大对象和使用 s 的意图weak_ptr
)?