shared_ptr
использует внутренний управляющий блок (control block), который содержит счетчик сильных ссылок (strong count) и счетчик слабых ссылок (weak count).
Механизм работы:
shared_ptr
, указывающего на объект, создается управляющий блок с обоими счетчиками, инициализированными в 1.
c
shared_ptr
: При копировании shared_ptr
увеличивается strong_count
в том же управляющем блоке.
c
shared_ptr
: Присваивание одного shared_ptr
другому уменьшает strong_count
у левого операнда (если он указывал на объект) и увеличивает strong_count
у правого операнда.weak_ptr
: При создании weak_ptr
из shared_ptr
увеличивается weak_count
в том же управляющем блоке. strong_count
при этом не меняется.
c
shared_ptr
использует внутренний управляющий блок (control block), который содержит счетчик сильных ссылок (strong count) и счетчик слабых ссылок (weak count).
Механизм работы:
shared_ptr
, указывающего на объект, создается управляющий блок с обоими счетчиками, инициализированными в 1.
c
shared_ptr
: При копировании shared_ptr
увеличивается strong_count
в том же управляющем блоке.
c
shared_ptr
: Присваивание одного shared_ptr
другому уменьшает strong_count
у левого операнда (если он указывал на объект) и увеличивает strong_count
у правого операнда.weak_ptr
: При создании weak_ptr
из shared_ptr
увеличивается weak_count
в том же управляющем блоке. strong_count
при этом не меняется.
c
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.