https://learn.microsoft.com/ko-kr/cpp/cpp/smart-pointers-modern-cpp?view=msvc-170
▣ 스마트포인터 : C++11 버전 이후부터 새로운 스마트포인터 제공
▣ 스마트포인터 : 메모리 할당 시 따로 delete를 사용하지 않아도 메모리 자동해제
▣ 스마트포인터 종류
▣ unique_ptr : 하나의 객체에 하나의 포인터만 소유권을 가질 수 있는 스마트포인터
▣ shared_ptr : 하나의 객체가 참조하는 스마트 포인터가 총 몇 개인지를 참조하는 스마트포인터
▣ weak_ptr : shared_ptr 객체에 대한 접근은 가능하지만 메모리 소유권이 없고 소유자 수에도 포함되지 않는 스마트포인터
▣ unique_ptr사용방법 : unique_ptr<데이터타입>포인터이름(new 할당받을 메모리타입);
▣ 자동으로 메모리를 해제하기 때문에 생성자, 소멸자 모두 자동 호출
▣ 일반적으로 new 키워드를 이용해서 메모리할당을 하게 되면 생상자만 호출
▣ unique_ptr 사용방법 : unique_ptr<데이터타입>포인터이름(new 할당받을 메모리타입);
▣ release() : 메모리 소유권을 넘겨주는 함수
unique_ptr 포인터는 하나의 주소의 소유권만 가지고 있기 때문에 메모리를 확인해 보면 &test 주소 확인
▣ release() 함수를 사용하고 &test2에 메모리를 확인하면 &test1에 있던 주소가 들어있는 걸 확인
▣ reset() : 메모리를 재설정하는 함수
▣ 메모리 재설정 시 메모리 생성 및 소멸 순서 확인
▣ shared_ptr 사용방법 : shared_ptr<데이터타입>포인터이름(new 할당받을 메모리타입);
▣ use_count() : 몇 개의 포인터가 가리키고 있는지 반환
▣ weak_ptr 사용방법 : weak_ptr<데이터타입>포인터이름; , weak_ptr<데이터타입>포인터이름 = 포인터;
▣ weak_ptr 포인터는 use_count()에 포함하지 않는다.
▣ expired() : 포인터가 가리키고 있는 게 있는지에 대한 여부 반환
▣ lock() : 포인터를 가리키고 있으면 shared_ptr 주소반환, 아니면 NULL 반환
'[ C++ ] > - C++ 문법정리' 카테고리의 다른 글
C++ 31 [스트림 객체 상태 플래그] (0) | 2023.10.04 |
---|---|
C++ 30 [Manipulator 조정자] (2) | 2023.10.03 |
C++ 28 [예외처리] (0) | 2023.05.12 |
C++ 27 [파일입출력] (2) | 2023.05.09 |
C++ 26 [포맷플래그 입출력] (0) | 2023.05.03 |
댓글