Sobes.tech
Назад к вопросам
Junior — Middle
89

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

Компании, где спрашивали
КасперскийКасперский

Ответ от нейросети

sobes.tech AI

Функция make_unique в C++ создает объект в динамической памяти и возвращает умный указатель std::unique_ptr на этот объект.

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

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

Недостатки:

  • Требует поддержки C++14 и выше (в стандарте C++11 make_unique отсутствует).
  • Немного больше накладных расходов по сравнению с сырыми указателями, но это оправдано безопасностью.

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

#include <memory>

struct MyClass {
    int value;
    MyClass(int v) : value(v) {}
};

int main() {
    auto ptr = std::make_unique<MyClass>(42);
    // ptr автоматически освободит память при выходе из области видимости
}