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