Namespaces
Variants

std::unique_ptr<T,Deleter>:: release

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
pointer release ( ) noexcept ;
(desde C++11)
(constexpr desde C++23)

Libera la propiedad del objeto gestionado, si existe alguno.

get() devuelve nullptr después de la llamada.

La persona que llama es responsable de limpiar el objeto (por ejemplo, mediante el uso de get_deleter() ).

Contenidos

Parámetros

(ninguno)

Valor de retorno

Puntero al objeto gestionado o nullptr si no había ningún objeto gestionado, es decir, el valor que sería devuelto por get() antes de la llamada.

Ejemplo

#include <cassert>
#include <iostream>
#include <memory>
struct Foo
{
    Foo() { std::cout << "Foo\n"; }
    ~Foo() { std::cout << "~Foo\n"; }
};
// La propiedad del recurso Foo se transfiere al llamar esta función
void legacy_api(Foo* owning_foo)
{
    std::cout << __func__ << '\n';
    // [código heredado que nadie entiende o se atreve a modificar]
    // [...]
    delete owning_foo;
}
int main()
{
    std::unique_ptr<Foo> managed_foo(new Foo);
    // [código que podría retornar o lanzar una excepción o algo similar]
    // [...]
    legacy_api(managed_foo.release());
    assert(managed_foo == nullptr);
}

Salida:

Foo
legacy_api
~Foo

Véase también

devuelve un puntero al objeto gestionado
(función miembro pública)
devuelve el deleter que se utiliza para la destrucción del objeto gestionado
(función miembro pública)
reemplaza el objeto gestionado
(función miembro pública)