std::unique_ptr<T,Deleter>:: release
From cppreference.net
<
cpp
|
memory
|
unique ptr
C++
Memory management library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::unique_ptr
| Member functions | ||||
| Modifiers | ||||
|
unique_ptr::release
|
||||
| Observers | ||||
| Non-member functions | ||||
|
(C++14)
(C++20)
|
||||
|
(until C++20)
(C++20)
|
||||
|
(C++20)
|
||||
| Helper classes | ||||
|
pointer release
(
)
noexcept
;
|
(начиная с C++11)
(constexpr начиная с C++23) |
|
Освобождает владение управляемым объектом, если таковой имеется.
get() возвращает nullptr после вызова.
Вызывающая сторона несёт ответственность за очистку объекта (например, с помощью get_deleter() ).
Содержание |
Параметры
(нет)
Возвращаемое значение
Указатель на управляемый объект или nullptr если управляемого объекта не было, т.е. значение, которое было бы возвращено get() до вызова.
Пример
Запустить этот код
#include <cassert> #include <iostream> #include <memory> struct Foo { Foo() { std::cout << "Foo\n"; } ~Foo() { std::cout << "~Foo\n"; } }; // Владение ресурсом Foo передается при вызове этой функции void legacy_api(Foo* owning_foo) { std::cout << __func__ << '\n'; // [устаревший код, который никто не понимает или не решается изменять] // [...] delete owning_foo; } int main() { std::unique_ptr<Foo> managed_foo(new Foo); // [код, который может завершиться возвратом или исключением] // [...] legacy_api(managed_foo.release()); assert(managed_foo == nullptr); }
Вывод:
Foo legacy_api ~Foo
Смотрите также
|
возвращает указатель на управляемый объект
(public member function) |
|
|
возвращает удалитель, используемый для уничтожения управляемого объекта
(public member function) |
|
|
заменяет управляемый объект
(public member function) |