[STL] 4. make_shared

C++0x 2010. 8. 12. 12:00 Posted by 알 수 없는 사용자

안녕하세요. 방수철입니다.
이번 글에서는 make_shared 에 대해서 설명드리겠습니다.

VS2010 C++에서는 다음과 같은 구문을 사용할 수 있게 되었습니다.


  1 auto sp = make_shared<int>(1);

이전 버전들에서 위와 같은 기능을 하는 코드는 다음과 같습니다.


  1 shared_ptr<int> sp(new int(1));

make_shared<T>를 사용하는 것이 여러 장점이 있습니다.
첫째, 편리함. 위의 예제에서 처럼 자료형의 이름을 한번이라도 덜 입력해도 됩니다.
두번째, 안정성. 포인터와 객체가 동시에 생성되기 때문에 익히 알려줘 왔던 shared_pointer의 unnamed leak를 방지할 수 있습니다.
마지막으로, 효율성. 이전 버전에서 처럼 shared_ptr을 선언하면 동적할당이 두 번 일어나게 되지만, make_shared<T>를 사용하게 되면 한 번만 일어나게 됩니다.

참고 :
http://msdn.microsoft.com/en-us/library/ee410595.aspx