# std::unique_ptr::release

From cppreference.com
< cpp‎ | memory‎ | unique ptr

pointer release(); |  | (since C++11)

Releases the ownership of the managed object if any. get() returns nullptr after the call.

### Parameters

(none)

### Return value

Pointer to the managed object or nullptr if there was no managed object, i.e. the value which would be returned by get() before the call.

### Exceptions

`noexcept` specification:
noexcept

### Example

Run this code

    #include <memory>
    #include <iostream>
    #include <cassert>

    struct Foo {
        Foo() { std::cout << "Foo\n"; }
        ~Foo() { std::cout << "~Foo\n"; }
    };

    int main()
    {
        std::cout << "Creating new Foo...\n";
        std::unique_ptr<Foo> up(new Foo());

        std::cout << "About to release Foo...\n";
        Foo* fp = up.release();

        assert (up.get() == nullptr);
        std::cout << "Foo is no longer owned by unique_ptr...\n";

        delete fp;
    }

Output:

    Creating new Foo...
    Foo
    About to release Foo...
    Foo is no longer owned by unique_ptr...
    ~Foo

### See also

get | returns a pointer to the managed object (public member function)
reset | replaces the managed object (public member function)

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/memory/unique_ptr/release&oldid=91464"
Category:

- unconditionally noexcept

Hidden categories:

- Pages with unreviewed unconditional noexcept template
- Pages with unreviewed noexcept template