Sobes.tech
Back to questions
Junior — Middle
81

Какие преимущества дает использование std::make_shared при создании управляемых объектов в C++?

Companies where asked
ГК Адепт

Answer from AI

sobes.tech AI

std::make_shared создает объект и соответствующий std::shared_ptr за одну операцию, что дает несколько преимуществ:

  • Эффективность памяти: выделяется одна область памяти под объект и управляющий блок, уменьшая накладные расходы на выделение памяти.
  • Безопасность: исключается риск утечки памяти при исключениях, так как объект создается и сразу оборачивается в shared_ptr.
  • Удобство: код становится короче и чище, не нужно явно писать тип дважды.

Пример:

auto ptr = std::make_shared<MyClass>(constructor_arg);

Вместо:

std::shared_ptr<MyClass> ptr(new MyClass(constructor_arg));