unique_ptr выражает единоличное владение ресурсом и автоматически освобождает его при уничтожении владельца. Это помогает исключить утечки и неоднозначную ответственность за delete.
Зачем нужен unique_ptr?
unique_ptr выражает единоличное владение ресурсом и автоматически освобождает его при уничтожении владельца. Это помогает исключить утечки и неоднозначную ответственность за delete.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
unique_ptr выражает единоличное владение ресурсом и автоматически освобождает его при уничтожении владельца. Это помогает исключить утечки и неоднозначную ответственность за delete.
Он не копируется, но перемещается: владение можно передать другой переменной или функции. get() даёт невладеющий сырой указатель, reset() заменяет или освобождает ресурс, release() отдаёт сырой указатель без освобождения и требует нового явного владельца.
Для объектов обычно используют make_unique. Custom deleter позволяет управлять не только new/delete, но и ресурсами C-API. unique_ptr не делает объект потокобезопасным и не защищает выданные сырые указатели от использования после уничтожения. Совместное владение, если оно действительно нужно, — другая модель.