make_shared, make_unique의 장점
2022. 4. 16. 14:45ㆍProgramming/JAVA, C++, Go, Rust
- 목차
반응형
장점
- 코드 중복 제거
- std::shared_ptr<MyType> aobj(new MyType); 와 같이 MyType을 2회 지정하는 것을 1회로 줄일 수 있음
- 이 2회 지정의 실수를 예방할 수 있음
- std::shared_ptr<MyType> aobj(new MyType); 와 같이 MyType을 2회 지정하는 것을 1회로 줄일 수 있음
- 예외 안정성
- func(std::shared_ptr<MyType>(new MyType), someFunc());
- new MyType이후 someFunc가 실행되어 (compiler에 의해) 여기서 exception 발생 시,
- MyType에 대한 메모리 누수 발생
- func(std::shared_ptr<MyType>(new MyType), someFunc());
- make_shared를 통해 생성해야 CBLK가 객체와 한 덩어리로 할당됨
단점
- custom deleter를 지정할 수 없음
- 지정하려면, make_shared를 사용하면 안 됨
- std::shared_ptr<MyType> aobj(new MyType, customDeleter);
- 초기화 리스트 미지원
- {5, 10}의 두 값이 들어가게 하고 싶어 다음과 같이 코딩하면,
- std::make_shared<std::vector<int>>(5, 10);
- 여기서 5와 10은 벡터의 초기화 값이 아닌 make_shared의 초기화 값이며,
- make_shared는 이를 5개의 10의 값들로 해석해서 동작
- 즉, 5가 10개 생성됨
반응형
'Programming > JAVA, C++, Go, Rust' 카테고리의 다른 글
Effective Modern C++ (0) | 2022.04.21 |
---|---|
Universal reference (0) | 2022.04.16 |
Go 언어 변수 선언 (0) | 2022.01.09 |
Flutter vs. React Native (0) | 2021.12.30 |
go 언어로 web server 만들기 1 (고 언어 웹 서버) (0) | 2021.12.30 |