std::unique_ptr<T,Deleter>:: release
From cppreference.net
<
cpp
|
memory
|
unique ptr
C++
Memory management library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::unique_ptr
| Member functions | ||||
| Modifiers | ||||
|
unique_ptr::release
|
||||
| Observers | ||||
| Non-member functions | ||||
|
(C++14)
(C++20)
|
||||
|
(until C++20)
(C++20)
|
||||
|
(C++20)
|
||||
| Helper classes | ||||
|
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) |