C++

std::make_unique & std::make_shared

Keisa 2023. 9. 28. 19:22

1. new의 직접 사용에 비해, make 함수를 사용하면 소스코드의 중복의 여지가 없어지고, 예외 안정성이 향상되고, std::make_shared와 std::allocate_shared의 경우 더 작고 빠른 코드가 산출된다.

2. make함수의 사용이 불가능 또는 부적합한 경우로는 커스텀 삭제자를 지정해야 하는 경우와 중괄호 초기치를 전달해야하는 경우

3. std::shared_ptr에 대해서는 make함수가 부적합한 경우가 더 있는데, 두 가지 예를 들면 

1) 커스텀 메모리 관리기능을 가진 클래스를 다루는 경우

2) 메모리가 넉넉하지 않은 시스템에서 큰 객체를 자주 다루어야하고  std::weak_ptr들이 해당 std::shared_ptr들보다 더 오래 살아남는 경우