有一点我不太明白。
如果我没弄错的话,在使用它时std::weak_ptr()
我们如何创建它很重要std::shared_ptr()
。
auto sp1 = std::shared_ptr<int>(new int(10)); // 1
auto sp2 = std::make_shared<int>(10); // 2
1和2的区别在于对象和控制块的内存分配(单独还是一起)。当我们使用时,std::weak_ptr()
我们可以检查它是否“过期”,即使强链接计数器= 0,只要存在std::weak_ptr()
控制块本身,它就会存在,在这里我终于得到了这个问题!
当我们通过 std::make_shared<>() 分配内存时,就只剩下weak_ptr
控制块本身了,但是由于我们一起分配了内存,并且对象似乎存在,那么这个对象或分配的内存会发生什么?