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

Объясните механизм работы умного указателя std::unique_ptr в C++ и его особенности

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

sobes.tech AI

std::unique_ptr — это умный указатель в C++, который обеспечивает уникальное владение объектом. Его особенности:

  • Уникальное владение: только один unique_ptr может владеть объектом в данный момент.
  • Автоматическое освобождение памяти: при уничтожении unique_ptr вызывается деструктор объекта, память освобождается.
  • Нельзя копировать, но можно перемещать (std::move), что позволяет передавать владение.

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

#include <memory>
#include <iostream>

int main() {
    std::unique_ptr<int> ptr1 = std::make_unique<int>(10);
    std::cout << *ptr1 << std::endl; // выводит 10

    // std::unique_ptr<int> ptr2 = ptr1; // Ошибка: копирование запрещено
    std::unique_ptr<int> ptr2 = std::move(ptr1); // Передача владения

    if (!ptr1) {
        std::cout << "ptr1 больше не владеет объектом" << std::endl;
    }

    std::cout << *ptr2 << std::endl; // выводит 10
}

Таким образом, unique_ptr помогает избежать утечек памяти и обеспечивает безопасность владения ресурсами.