std::unique_ptr отдает сырой указатель и оставляет умный указатель пустым. После вызова unique_ptr больше не удаляет объект.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpUpRl 351 of 696 menu
◀ ▶

Отдача владения через release в C++

Метод release у std::unique_ptr отдает сырой указатель и оставляет умный указатель пустым.

После вызова unique_ptr больше не удаляет объект: ответственность переходит к тому, кто получил адрес. Его нужно освободить через delete, иначе утечка. Запишем число, заберем адрес и сразу освободим его:

#include <iostream> #include <memory> std::unique_ptr<int> gate = std::make_unique<int>(6); int* handoff = gate.release(); std::cout << *handoff << "\n"; delete handoff;

Создайте std::unique_ptr<int> со значением 3. Передайте владение через release, выведите число и освободите сырой указатель.

Объявите std::unique_ptr<int> с 8. После release проверьте, что умный указатель больше не владеет объектом: выведите 1, если после вызова get вернул nullptr, иначе 0. Не забудьте delete для сырого адреса.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить