shared_ptr
состоит из двух основных компонентов:
Указатель на управляемый ресурс: Сырой указатель на объект, которым shared_ptr
управляет.
Указатель на управляющий блок (Control Block): Объект, содержащий метаинформацию об управляемом ресурсе. Этот блок динамически выделяется при создании первого shared_ptr
или weak_ptr
, указывающего на ресурс.
Управляющий блок typically содержит:
shared_ptr
экземпляров, указывающих на ресурс. Когда этот счетчик достигает нуля, ресурс удаляется.weak_ptr
экземпляров, указывающих на ресурс. Ресурс удаляется только когда счетчик сильных ссылок становится нулем, независимо от значения этого счетчика. Однако, управляющий блок удаляется только когда оба счетчика становятся нулем.delete
.Пример создания shared_ptr
и его компонентов на уровне концепции:
cpp
shared_ptr
состоит из двух основных компонентов:
Указатель на управляемый ресурс: Сырой указатель на объект, которым shared_ptr
управляет.
Указатель на управляющий блок (Control Block): Объект, содержащий метаинформацию об управляемом ресурсе. Этот блок динамически выделяется при создании первого shared_ptr
или weak_ptr
, указывающего на ресурс.
Управляющий блок typically содержит:
shared_ptr
экземпляров, указывающих на ресурс. Когда этот счетчик достигает нуля, ресурс удаляется.weak_ptr
экземпляров, указывающих на ресурс. Ресурс удаляется только когда счетчик сильных ссылок становится нулем, независимо от значения этого счетчика. Однако, управляющий блок удаляется только когда оба счетчика становятся нулем.delete
.Пример создания shared_ptr
и его компонентов на уровне концепции:
cpp
Register or sign in to get access to full answers for all questions from the question bank.