Несколько shared_ptr
могут ссылаться на один и тот же объект благодаря использованию управляющего блока (control block).
Этот управляющий блок хранится в динамической памяти и содержит:
shared_ptr
, ссылающегося на объект, или при копировании существующего shared_ptr
. Уменьшается при уничтожении shared_ptr
. Когда счётчик сильных ссылок достигает нуля, объект, на который указывают shared_ptr
, уничтожается.weak_ptr
из shared_ptr
. Уменьшается при уничтожении weak_ptr
. Управляющий блок уничтожается только тогда, когда оба счётчика (сильных и слабых ссылок) достигают нуля.shared_ptr
указывался кастомный аллокатор.Когда создается первый shared_ptr
для данного объекта, аллоцируется управляющий блок. Последующие shared_ptr
, созданные либо копированием, либо из weak_ptr
, используют уже существующий управляющий блок, увеличивая счётчик сильных ссылок. Благодаря этому все shared_ptr
,
Несколько shared_ptr
могут ссылаться на один и тот же объект благодаря использованию управляющего блока (control block).
Этот управляющий блок хранится в динамической памяти и содержит:
shared_ptr
, ссылающегося на объект, или при копировании существующего shared_ptr
. Уменьшается при уничтожении shared_ptr
. Когда счётчик сильных ссылок достигает нуля, объект, на который указывают shared_ptr
, уничтожается.weak_ptr
из shared_ptr
. Уменьшается при уничтожении weak_ptr
. Управляющий блок уничтожается только тогда, когда оба счётчика (сильных и слабых ссылок) достигают нуля.shared_ptr
указывался кастомный аллокатор.Когда создается первый shared_ptr
для данного объекта, аллоцируется управляющий блок. Последующие shared_ptr
, созданные либо копированием, либо из weak_ptr
, используют уже существующий управляющий блок, увеличивая счётчик сильных ссылок. Благодаря этому все shared_ptr
,
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.