std::unique_ptr предотвращает множественное удаление объектов, владея ими. 2 Он автоматически удаляет управляемый объект, как только сам уничтожается или его значение меняется (например, в результате операции присваивания или явного вызова функции reset()). 1
При этом объекты std::unique_ptr удаляют управляемый объект, не учитывая, указывают ли на него другие указатели. 1 Таким образом, любые другие указатели, которые на него указывают, указывают на невалидную область памяти. 1
Кроме того, у класса std::unique_ptr удалён конструктор копирования, что предотвращает его копирование, и, следовательно, у объекта не может быть нескольких владельцев. 25
Таким образом, std::unique_ptr обеспечивает эксклюзивное владение объектом, на который он указывает, и предотвращает множественное удаление этого объекта другими указателями.