Назад к вопросам
Middle
116
questionbank
У shared_ptr есть только один счетчик ссылок или их несколько?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
// shared_ptr использует один общий счетчик ссылок (reference count),
// который хранится в управляющем блоке (control block).
// Этот управляющий блок также содержит информацию о пользовательском delete (deleter)
// и пользовательском аллокаторе (allocator), если они были предоставлены при создании shared_ptr.
// Каждая копия shared_ptr, указывающая на один и тот же объект,
// ссылается на этот единственный управляющий блок и инкрементирует/декрементирует
// общий счетчик при копировании/удалении.
// Помимо общего счетчика ссылок для shared_ptr,
// управляющий блок также содержит счетчик слабых ссылок (weak count)
// для слабых указателей (weak_ptr), указывающих на тот же объект.
// Таким образом, для каждого объекта, управляемого shared_ptr,
// существует только один общий счетчик сильных ссылок (для shared_ptr) и один счетчик слабых ссылок (для weak_ptr),
// хранящиеся в одном управляющем блоке.