std::shared_ptr
可以用两个成员实现,一个指向托管资源的指针和一个指向控制块的指针。
std::shared_ptr
可以使用std::make_shared
构建,可以将托管对象和shared_ptr
控制块的两个分配合并为一个。
release
如何运作?它允许托管对象比共享指针更长,但必须在共享指针的析构函数中删除控制块。破坏和解除分配是如何处理的?
答案 0 :(得分:4)
release
你不能shared_ptr
。它不起作用。没有这样的成员。
答案 1 :(得分:-1)
当调用shared_ptr析构函数时,共享的refCount会递减。当共享的refCount达到0时,该对象将被销毁。对于使用make_shared创建的对象,对象的空间在控制块中保持未使用状态。当弱refCount达到0时,空间将释放回堆中。