다음을 통해 공유


unique_ptr::release

호출자에 대해 저장된 포인터가 반환되면 소유권을 해제하고 저장된 포인터 값을 nullptr로 설정합니다.

pointer release();

속성 값/반환 값

저장된 포인터를 반환합니다.

설명

release를 사용하여 unique_ptr이 저장한 원시 포인터의 소유권을 가져올 수 있습니다. 호출자는 반환된 포인터를 삭제해야 합니다. unique-ptr은 비어 있는 기본 생성 상태로 설정됩니다. release 호출 후에 호환되는 형식의 다른 포인터를 unique_ptr에 할당할 수 있습니다.

예제

이 예에서는 릴리스의 호출자가 반환된 개체를 책임지는 방식을 보여 줍니다.

// stl_release_unique.cpp
// Compile by using: cl /W4 /EHsc stl_release_unique.cpp
#include <iostream>
#include <memory>

struct Sample {
   int content_;
   Sample(int content) : content_(content) {
      std::cout << "Constructing Sample(" << content_ << ")" << std::endl;
   }
   ~Sample() {
      std::cout << "Deleting Sample(" << content_ << ")" << std::endl;
   }
};

void ReleaseUniquePointer() {
   // Use make_unique function when possible.  
   auto up1 = std::make_unique<Sample>(3);
   auto up2 = std::make_unique<Sample>(42);
   
   // Take over ownership from the unique_ptr up2 by using release
   auto ptr = up2.release();
   if (up2) {
      // This statement does not execute, because up2 is empty.
      std::cout << "up2 is not empty." << std::endl;
   }
   // We are now responsible for deletion of ptr.
   delete ptr;
   // up1 deletes its stored pointer when it goes out of scope.   
}

int main() {
   ReleaseUniquePointer();
}

컴퓨터 출력:

  

요구 사항

헤더: <memory>

네임스페이스: std

참고 항목

작업

방법: unique_ptr 인스턴스 만들기 및 사용

참조

unique_ptr 클래스

<memory>

기타 리소스

unique_ptr 멤버

<memory> 멤버