Управляющий блок shared_ptr
Вопрос
Что хранится в управляющем блоке shared_ptr?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
Ответ
Счётчик сильных ссылок, счётчик слабых ссылок (обычно плюс один, пока жив хоть один сильный), удалитель и аллокатор (с оптимизацией пустой базы), а при make_shared ещё и сам объект. Объект уничтожается при нуле сильных ссылок, блок освобождается при нуле слабых.
Разбор
Счётчик сильных ссылок, счётчик слабых ссылок (обычно плюс один, пока жив хоть один сильный), удалитель и аллокатор (с оптимизацией пустой базы), а при make_shared ещё и сам объект. Объект уничтожается при нуле сильных ссылок, блок освобождается при нуле слабых.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Дерево на unique_ptr: перенос и удаление поддеревьев
Следующий вопрос
Пользовательский удалитель
Ещё по теме «RAII и умные указатели»
- Модель shared_ptr: кто и когда уничтожится
- Цикл из shared_ptr
- delete для new[]
- Объясни RAII на примерах
- Чем make_shared лучше shared_ptr(new T)
- Что происходит, когда умирает последний shared_ptr
- Что выведет: порядок конструкторов и деструкторов
- Что выведет: use_count и weak_ptr