Back to questions
Junior — Middle
84
Объясните механизм работы умного указателя std::unique_ptr в C++ и его особенности
Answer from AI
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 помогает избежать утечек памяти и обеспечивает безопасность владения ресурсами.