더북(TheBook)

이 예에서는 두 double 값을 저장하는 메모리를 p1p2에 할당했다. 포인터 p3p2를 복사해 그림 1-1에 표시된 것처럼 메모리를 가리킨다.

▲ 그림 1-1 메모리상에서의 shared_ptr

 

우리는 use_count의 출력 결과를 통해 이를 확인할 수 있다.

p3.use_count() = 2
p.use_count() = 1

함수가 반환하면 포인터를 파괴하고 p1이 참조하는 메모리를 (사용하지 않고) 해제한다. 두 번째로 할당한 메모리 블록은 main 함수의 p가 여전히 이를 참조하기 때문에 계속 존재한다.

가능하다면 make_shared를 사용해서 shared_ptr를 만들어야 한다.

shared_ptr<double> p1 = make_shared<double>();
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.