Я пытался написать заголовок для этого вопроса в течение примерно 10 минут, и, как вы увидите, я в итоге потерпел неудачу.[Примечание редактора: я думаю, что исправил это.]
Я читал блог Херба Саттера , и тема использует std :: make_shared и его минусы и плюсы.Пожалуйста, смотрите прикрепленную фотографию:
Это небольшая часть очень очень интересной статьи , которую я настоятельно рекомендую прочитать людям,Мой вопрос касается этого предложения:
Подсчет «слабых ссылок» для отслеживания количества слабых_птров, наблюдающих в данный момент объект.Блок управления общим обслуживанием уничтожается и освобождается (а общий объект освобождается, если он еще не был), когда исчезает последняя слабая ссылка. **
Я действительно не понимаю этого утверждения.Первоначально, когда мы создаем std::shared_ptr
на make_shared
, например, auto sp1 = make_shared<widget>();
, в настоящее время нет слабых ptrs, наблюдающих sp1, поэтому он будет удален, когда shared_ptr
выйдет из области видимости обычным способом.
Итак, как добавление слабой ссылки меняет это поведение?Может кто-нибудь объяснить это мне, пожалуйста?