名前空間
変種
操作

std::unique_ptr::release

提供: cppreference.com
< cpp‎ | memory‎ | unique ptr
 
 
 
動的メモリ管理
未初期化記憶域
(C++17)
ガベージコレクションサポート
その他
(C++20)
(C++11)
(C++11)
C のライブラリ
低水準のメモリ管理
 
 
pointer release() noexcept;
(C++11およびそれ以降)

もしあれば、管理対象オブジェクトの所有権を解放します。 呼び出しの後、 get()nullptr を返します。

目次

[編集] 引数

(なし)

[編集] 戻り値

管理対象オブジェクトを指すポインタ、または管理対象オブジェクトがなかったならば nullptr。 つまり、この関数を呼ぶ前であれば get() によって返されたであろう値を返します。

[編集]

#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;
}

出力:

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

[編集] 関連項目

管理対象オブジェクトへのポインタを返します
(パブリックメンバ関数) [edit]
管理対象オブジェクトを置き換えます
(パブリックメンバ関数) [edit]