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
;
|
(depuis C++11)
(constexpr depuis C++23) |
|
Libère la propriété de l'objet géré, s'il y en a un.
get() renvoie nullptr après l'appel.
L'appelant est responsable du nettoyage de l'objet (par exemple via l'utilisation de get_deleter() ).
Table des matières |
Paramètres
(aucun)
Valeur de retour
Pointeur vers l'objet géré ou nullptr s'il n'y avait pas d'objet géré, c'est-à-dire la valeur qui serait retournée par get() avant l'appel.
Exemple
Exécuter ce code
#include <cassert> #include <iostream> #include <memory> struct Foo { Foo() { std::cout << "Foo\n"; } ~Foo() { std::cout << "~Foo\n"; } }; // La propriété de la ressource Foo est transférée lors de l'appel de cette fonction void legacy_api(Foo* owning_foo) { std::cout << __func__ << '\n'; // [code legacy que personne ne comprend ou n'ose plus modifier] // [...] delete owning_foo; } int main() { std::unique_ptr<Foo> managed_foo(new Foo); // [code qui pourrait retourner ou lever une exception ou autre] // [...] legacy_api(managed_foo.release()); assert(managed_foo == nullptr); }
Sortie :
Foo legacy_api ~Foo
Voir aussi
|
renvoie un pointeur vers l'objet géré
(fonction membre publique) |
|
|
renvoie le suppresseur utilisé pour la destruction de l'objet géré
(fonction membre publique) |
|
|
remplace l'objet géré
(fonction membre publique) |