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 ;
(seit C++11)
(constexpr seit C++23)

Gibt die Eigentümerschaft des verwalteten Objekts frei, falls vorhanden.

get() gibt nach dem Aufruf nullptr zurück.

Der Aufrufer ist für die Bereinigung des Objekts verantwortlich (z.B. durch Verwendung von get_deleter() ).

Inhaltsverzeichnis

Parameter

(keine)

Rückgabewert

Zeiger auf das verwaltete Objekt oder nullptr falls kein verwaltetes Objekt vorhanden war, d.h. der Wert, der vor dem Aufruf von get() zurückgegeben worden wäre.

Beispiel

#include <cassert>
#include <iostream>
#include <memory>
struct Foo
{
    Foo() { std::cout << "Foo\n"; }
    ~Foo() { std::cout << "~Foo\n"; }
};
// Ownership of the Foo resource is transferred when calling this function
void legacy_api(Foo* owning_foo)
{
    std::cout << __func__ << '\n';
    // [legacy code that no one understands or dares touch anymore]
    // [...]
    delete owning_foo;
}
int main()
{
    std::unique_ptr<Foo> managed_foo(new Foo);
    // [code that might return or throw or some such]
    // [...]
    legacy_api(managed_foo.release());
    assert(managed_foo == nullptr);
}

Ausgabe:

Foo
legacy_api
~Foo

Siehe auch

gibt einen Zeiger auf das verwaltete Objekt zurück
(öffentliche Elementfunktion)
gibt den Deleter zurück, der für die Zerstörung des verwalteten Objekts verwendet wird
(öffentliche Elementfunktion)
ersetzt das verwaltete Objekt
(öffentliche Elementfunktion)