Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | memory‎ | unique ptr
 
 
Speicherverwaltungsbibliothek
(nur Exposition*)
Algorithmen für uninitialisierten Speicher
(C++17)
(C++17)
(C++17)
Beschränkte uninitialisierte
Speicher-Algorithmen
C-Bibliothek

Allocatoren
Speicherressourcen
Unterstützung für Garbage Collection
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
Uninitialisierter Speicher
Explizites Lebenszeitmanagement
 
 
pointer release() noexcept;
(seit C++11)
(constexpr seit C++23)

Gibt den Besitz des verwalteten Objekts, falls vorhanden, frei.

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

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

Inhalt

[edit] Parameter

(keine)

[edit] Rückgabewert

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

[edit] 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

[edit] Siehe auch

Gibt einen Zeiger auf das verwaltete Objekt zurück
(öffentliche Memberfunktion) [bearbeiten]
Gibt den Deleter zurück, der zur Zerstörung des verwalteten Objekts verwendet wird
(public member function) [edit]
Ersetzt das verwaltete Objekt
(public member function) [edit]