Middle
44
0
questionbank

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

Answer from sobes.tech neural network

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

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

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

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

Register or sign in to get access to full answers for all questions from the question bank.

shared-ptrmemory-managementperformance-optimizationresource-management