Middle
36
0
questionbank

В чем разница между созданием объекта типа shared_ptr с помощью конструктора и с помощью функции make_shared?

Ответ от нейросети sobes.tech

Основное отличие — в количестве выделений памяти:

  1. Конструктор shared_ptr: Требует двух отдельных выделений памяти. Одно для самого объекта, другое для управляющего блока (control block), содержащего счетчики ссылок и прочую метаинформацию.
  2. make_shared: Выполняет одно единое выделение памяти для объекта и управляющего блока совместно.
ХарактеристикаКонструктор shared_ptrmake_shared
Количество аллокацийДвеОдна
ЭффективностьМенее эффективенБолее эффективен
Гарантии исключенийМеньше (возможна утечка в выражении)Больше (атомарная операция)
И

Основное отличие — в количестве выделений памяти:

  1. Конструктор shared_ptr: Требует двух отдельных выделений памяти. Одно для самого объекта, другое для управляющего блока (control block), содержащего счетчики ссылок и прочую метаинформацию.
  2. make_shared: Выполняет одно единое выделение памяти для объекта и управляющего блока совместно.
ХарактеристикаКонструктор shared_ptrmake_shared
Количество аллокацийДвеОдна
ЭффективностьМенее эффективенБолее эффективен
Гарантии исключенийМеньше (возможна утечка в выражении)Больше (атомарная операция)
И

Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.

shared-ptrmemory-managementperformance-optimizationresource-management