名前空間
変種
操作

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

提供: cppreference.com
< cpp‎ | memory‎ | unique ptr
 
 
ユーティリティライブラリ
汎用ユーティリティ
日付と時間
関数オブジェクト
書式化ライブラリ (C++20)
(C++11)
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)
スワップと型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
一般的な語彙の型
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

初等文字列変換
(C++17)
(C++17)
 
動的メモリ管理
スマートポインタ
(C++11)
(C++11)
(C++11)
(C++17未満)
(C++11)
アロケータ
メモリリソース
未初期化記憶域
ガベージコレクションサポート
その他
(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]