Страницы

Поиск по вопросам

пятница, 14 февраля 2020 г.

unique_ptr вызывает деструктор только при reset

#cpp #указатели #cpp17


Почему std::unique_ptr<...> вызывает деструктор целевого объекта только если вызвать 

std::unique_ptr<>::reset(nullptr);


При этом, если вызвать std::unique_ptr<>::release, то ничего не происходит, но указатель
обнуляется.

Что делать необходимо дабы не происходило таких ситуаций?
    


Ответы

Ответ 1



При вызове std::unique_ptr::release владение указателем передается вызывающему коду. Игнорирование возвращаемого значения является ошибкой. Что делать? Ничего. Не надо вызывать release если нет намерения вручную удалить объект.

Комментариев нет:

Отправить комментарий