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));