std::unique_ptr — это смарт-указатель, который реализует эксклюзивное владение динамически выделенным объектом. Он обеспечивает автоматическое управление памятью: объект, на который указывает unique_ptr, автоматически удаляется при уничтожении unique_ptr.
Ключевые особенности:
unique_ptr может владеть конкретным объектом.unique_ptr не может быть скопирован. Это предотвращает множественное владение одним и тем же объектом и проблему "двойного удаления".unique_ptr к другому с использованием семантики перемещения (std::move).Принцип работы основан на RAII (Resource Acquisition Is Initialization): ресурс (динамически выделенная память) приобретается при создании объекта (unique_ptr), а освобождается при уничтожении этого объекта.
cpp
Сравнение с raw pointer:
| Характеристика | raw pointer | std::unique_ptr |
|---|---|---|
| Владение ресурсом | Не определено | Эксклюзивное |
| Автоматическое удаление | Нет | Да |
| Семантика копирования | Да | Нет (только перемещение) |
| Утечки памяти | Высокий риск | Низкий риск |
В целом, unique_ptr — это предпочтительный способ управления динамической памятью в C++11 и выше для случаев, когда требуется строгое владение и автоматическое освобождение ресурсов.