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

관리 중인 객체가 있을 경우, 해당 객체의 소유권을 해제합니다.

get() 호출 후 nullptr 를 반환합니다.

호출자는 객체를 정리할 책임이 있습니다 (예: get_deleter() 사용을 통해).

목차

매개변수

(없음)

반환값

관리되는 객체에 대한 포인터 또는 nullptr (관리되는 객체가 없을 경우), 즉 호출 전 get() 이 반환했을 값.

예제

#include <cassert>
#include <iostream>
#include <memory>
struct Foo
{
    Foo() { std::cout << "Foo\n"; }
    ~Foo() { std::cout << "~Foo\n"; }
};
// 이 함수를 호출할 때 Foo 리소스의 소유권이 이전됨
void legacy_api(Foo* owning_foo)
{
    std::cout << __func__ << '\n';
    // [더 이상 이해하거나 수정하기 어려운 레거시 코드]
    // [...]
    delete owning_foo;
}
int main()
{
    std::unique_ptr<Foo> managed_foo(new Foo);
    // [반환되거나 예외를 발생시킬 수 있는 코드]
    // [...]
    legacy_api(managed_foo.release());
    assert(managed_foo == nullptr);
}

출력:

Foo
legacy_api
~Foo

참고 항목

관리되는 객체에 대한 포인터를 반환합니다
(public member function)
관리되는 객체의 소멸에 사용되는 삭제자를 반환합니다
(public member function)
관리되는 객체를 교체합니다
(public member function)