[참조]
https://learn.microsoft.com/ko-kr/cpp/cpp/smart-pointers-modern-cpp?view=msvc-170

스마트 포인터(최신 C++)

자세한 정보: 스마트 포인터(최신 C++)

learn.microsoft.com


사용 목표
메모리나 리소스의 누수, 예외로 부터 안전한지 확인하기 위함

스마트 포인터의 구성원리
스택에 선언된 포인터, 힙에 할당된 객체를 가리킴

스마트 포인터 동작 의미
- 초기화하면 원시 포인터를 가짐  
    > 원시 포인터가 가리키는 힙 메모리의 삭제 책임이 해당 포인터에 있음을 나타냄
        > 스마트 포인터의 소멸자에 메모리 삭제 과정이 포함되어있음

사용방법
기존 포인터와 동일하게 ->와 * 을 활용하여 사용

직접 접근('.')이 활용되는 경우
- .reset() : 소유권 해제
     > 범위를 벗어나기 전에 메모리를 삭제하고 싶은 경우에 유용
         > 소유권을 해제하는 과정에 힙메모리 삭제과정이 포함되어 있는 것으로 보임
- .get() : 원시 포인트에 직접 접근할 수 있도록 전달

윈도우즈 환경에서 사용가능한 스마트 포인터 종류
- unique_ptr: 소유자 한명만 허용, 기본 포인터
- shared_ptr: 참조 횟수를 계산하는 포인터, 원시 포인터를 여러 소유자에게 할당, 모든 소유자가 소멸할때까지 유지.
- weak_ptr: shared_ptr과 함께 사용, shared_ptr의 개체를 가리키되 참조 횟수에는 포함되지 않음
    > weak_ptr이 가리키는 객체가 없어져 있을 수도 있음

(COM에 대한 내용은 추후 정리, 아직은 어디서 쓰는지도 모르겠음)

'개발자로 > Cpp' 카테고리의 다른 글

Cpp, extern  (0) 2024.04.16
Cpp, mutex  (0) 2024.03.30
Cpp, 테스팅 메모  (0) 2023.10.05
Cpp, 정규 표현식  (0) 2023.10.04
Cpp, 프로그래밍 시 유의점 메모  (0) 2023.09.23

+ Recent posts