더북(TheBook)

C++11 1.8.3.2 shared_ptr

shared_ptr는 이름에서 알 수 있듯이 여러 파티(각 파티가 포인터를 갖고 있음)에서 공통으로 사용하는 메모리를 관리한다. shared_ptr가 더 이상 데이터를 참조하지 않는 즉시 메모리를 자동으로 해제한다. 이렇게 하면 프로그램을 상당히 단순하게 만들 수 있다. 특히 복잡한 데이터 구조의 경우 더욱 그렇다. 매우 중요한 애플리케이션 영역은 바로 동시성이다. 즉, 모든 스레드가 스레드에 대한 접근이 끝나면 메모리를 자동으로 해제한다.

unique_ptr과 달리 shared_ptr는 원하는 만큼 자주 복사할 수 있다. 예를 들어,

shared_ptr<double> f()
{
    shared_ptr<double> p1{new double};
    shared_ptr<double> p2{new double}, p3 = p2;
    cout << "p3.use_count() = " << p3.use_count() << endl;
    return p3;
}

int main()
{
    shared_ptr<double> p = f();
    cout << "p.use_count() = " << p.use_count() << endl;
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.