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.