Notice
Recent Posts
Recent Comments
공부중
[C++]스마트포인터(Smartpointer) - unique_ptr 본문
반응형
코드는 아래와 같다.
#include <iostream> #include <memory> //unique_ptr int main() { int foo = 100; //unique_ptr std::unique_ptr<int> unique_ptr_value1{ new int }; //std::unique_ptr<int> unique_ptr_value2{ &foo }; //Runtime Error // 동적으로 할당하지 않은 주소를 넣으면 해제시 문제 발생 *unique_ptr_value1 = 1000; std::cout <<"*unique_ptr_value1 : "<< *unique_ptr_value1 << std::endl; //value //std::cout << unique_ptr_value1 << std::endl; //error std::cout <<"unique_ptr_value1.get() : "<< unique_ptr_value1.get() << std::endl; //address /********************************************* // //std::unique_ptr<int> unique_ptr_value3{ unique_ptr_value1.get() }; //다른 unique_ptr에 할당(복사) 불가 - 단 하나만 가리킬수 있다 // *********************************************/ //복사는 안되고 오직 이동만 가능. std::unique_ptr<int> unique_ptr_value4{ std::move(unique_ptr_value1) }; std::cout << "---------- std::move() Call ----------" << std::endl; //===================== // unique_ptr_value1 //===================== //std::cout << *unique_ptr_value1 << std::endl; //Runtime error empty //비어있음 근데 주소 출력은 되네 호오??? std::cout << "unique_ptr_value1.get() : " << unique_ptr_value1.get() << std::endl; //===================== // unique_ptr_value4 //===================== std::cout << "*unique_ptr_value4 : " << *unique_ptr_value4 << std::endl; //value std::cout << "unique_ptr_value4.get() : " << unique_ptr_value4.get() << std::endl; //address return 0; }
실행 결과
이름 그대로 unique 하다.
복사가 안되고 오직 이동만 가능하다!
그리고 스마트포인터 종류중 하나이므로 메모리 delete해줄 필요 없이 메모리 할당 자동 해제.
반응형
'Programing > C, C++' 카테고리의 다른 글
[C++]스마트포인터(Smartpointer) - shared_ptr 메모리 누수(memory leak)에 관련해서 (0) | 2018.05.31 |
---|---|
[C++]스마트포인터(Smartpointer) - shared_ptr (0) | 2018.05.30 |
[C++]범위 기반 for문(Range-based for loop) (0) | 2018.05.25 |
[C++] 2진수 입력 방법과 어퍼스트로피 (0) | 2018.05.25 |
[C/C++] 구조체의 크기에 관해서.. (0) | 2017.07.07 |