맨체스터 사는 개발자

[Modern C++] Shared_ptr 과 make_shared 본문

개발/C++

[Modern C++] Shared_ptr 과 make_shared

aaamy91 2021. 5. 20. 04:13

Shared_ptr 및 make_shared 설명

1. shared_ptr이란?
- 객체 생성시 메모리를 가르키는 포인터들을 연결
- 기본적으로 포인터를 생성할 시 힙메모리에 할당이 되는데
- 추가적으로 힙메모리에 카운트를 생성하여 여러 포인터들을 손쉽게 관리해주는것
- 포인터가 늘어나면 카운트도 늘어나고 포인터가 줄어들어 카운트가 줄어들면 자동으로 자원할당을 해제해준다.
- 참조 카운트 수정작업은 굉장히 안정적으로 스레드에서 작동한다

그렇다면 왜? make_shared를 사용하는가?
1. shared_ptr을 사용하는것은 포인터를 더욱 쉽게 관리하기 위해서이다.
2. shared_ptr은 힙메모리에 포인터주소와 카운트를 기록한다.
3. make_shared는 힙메모리 중에서도 연속된 힙메모리 속에 주소와 카운트를 기록한다.
4. 기본형 shared_ptr은 포인터 주소 따로 카운트 따로 힙메모리를 구성하여 기록한다.
5. 그렇다면 make_shared, shared_ptr 무엇이 더 안전하고 빠르겠는가?
6. 당연히 정답은 make_shared