Sobes.tech
Back to questions
Junior — Middle
83

Какова основная цель использования функции make_shared и в чём её преимущества?

Answer from AI

sobes.tech AI

Функция make_shared в C++ используется для создания объекта, управляемого умным указателем std::shared_ptr. Основная её цель — эффективное и безопасное выделение памяти для объекта и управляющего блока счётчика ссылок в одном аллокации, что снижает накладные расходы и повышает производительность.

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

  • Оптимизация выделения памяти: выделяется одна область памяти под объект и счётчик ссылок, а не две, как при использовании shared_ptr с new.
  • Безопасность: исключается риск утечки памяти, даже если конструктор объекта выбросит исключение.
  • Удобство: синтаксис проще и чище.

Пример использования:

#include <memory>

struct MyClass {
    int x;
    MyClass(int val) : x(val) {}
};

int main() {
    auto ptr = std::make_shared<MyClass>(10); // Создаёт shared_ptr на объект MyClass с x=10
}