[참조]
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 |