스마트 포인터(smart pointer)
2022. 3. 23. 17:23ㆍ기술 면접
스마트 포인터(smart pointer)
C++에서는 new 키워드를 사용하여 동적으로 할당받는 메모리는 반드시 delete 키워드를 사용하여 해제해야 한다. 하지만 스마트 포인터는 포인터처럼 동작하는 클래스 템플릿으로, 사용이 끝난 메모리를 자동으로 해제해 준다.
스마트 포인터 종류
- shared_ptr
- 어떤 하나의 객체를 참조하는 스마트 포인터의 개수를 참조하는 스마트 포인터이다. 이렇게 참조하고 있는 스마트 포인터의 개수를 참조 카운트라고한다. 참조 카운트는 해당 메모리를 참조하는 포인터가 몇개인지 나타내는 값을 말한다.
- unique_ptr
- 하나의 스마트 포인터만이 객체를 가리킬 수 있도록 한다. shared_ptr과 다르게 참조 카운트가 1을 넘길 수 없다.
- weak_ptr
- 하나 이상의 shared_ptr가 가르키는 객체를 참조할 수 있지만 참조 카운트를 늘리지않는 스마트 포인터이다. shared_ptr을 사용할 때 발생할 수 있는 문제를 해결하기 위해 사용한다.
스마트 포인터에 대해 설명해주세요
기존 C++에서는 new 키워드를 사용하여 동적으로 할당받는 메모리는 반드시 delete키워드를 사용하여 해제해야 합니다. 하지만 스마트 포인터는 포인터처럼 작동하는 클래스 템플릿으로, 사용이 끝난 메모리를 자동으로 해제해줍니다. 스마트 포인터의 종류는 3가지가 있으며 shared_ptr, unique_ptr,weak_ptr이 있습니다. shared_ptr은 하나의 객체를 참조하는 스마트 포인터의 개수를 참조하는 스마트 포인터입니다. 참조하고 있는 스마트 포인터 개수를 참조 카운트라고 합니다. unique_ptr은 하나의 스마트 포인터만이 객체를 가리킬 수 있도록 하는 것입니다. weak_ptr은 하나 이상의 shared_ptr이 소유하는 가르키는 객체를 참조할 수 있지만 참조 카운트를 늘리지 않는 스마트 포인터입니다.
'기술 면접' 카테고리의 다른 글
TCP/UDP (0) | 2022.03.24 |
---|---|
C++과 C#의 차이 (0) | 2022.03.23 |
전위 증감연산자 / 후위증감연산자 차이 (0) | 2022.03.23 |
값에 의한 호출(call by value),참조에 의한 호출(call by reference) (0) | 2022.03.23 |
C++ 얕은복사, 깊은복사 (Shallow Copy,Deep Copy) (0) | 2022.03.23 |