Sobes.tech
Back to questions
Junior — Middle
86

В чем преимущества и недостатки использования функции make_shared в C++?

Companies where asked
КасперскийКасперский

Answer from AI

sobes.tech AI

Функция make_shared в C++ создаёт объект и управляемый указатель (std::shared_ptr) на него за одну операцию.

Преимущества:

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

Недостатки:

  • Гибкость: Нельзя использовать с пользовательскими аллокаторами или создавать shared_ptr с кастомным удалителем напрямую через make_shared.
  • Память: Если объект очень большой, объединение с контрольным блоком может привести к неэффективному использованию памяти.

Пример:

#include <memory>

auto ptr = std::make_shared<int>(42);

Здесь создаётся shared_ptr на целочисленный объект со значением 42.