«Выделение» означает блок памяти, полученный при обращении к распределителю.
Обычно, создание shared_ptr
с помощью конструктора указателя выделяет память для «блока управления», который содержит ссылкупосчитай и удалитель.Копии этого shared_ptr
все ссылаются на один и тот же блок управления, так что они совместно используют счетчик ссылок.Следовательно, всего существует два выделения - сам объект и управляющий блок, созданный shared_ptr
.
Если вы создаете объект и shared_ptr
вместе с make_shared
, то выполняется только одно выделение.Вы можете думать об этом как о единой структуре с двумя членами:
- Управляемый объект
- Блок управления.