nullptr로 바뀜delete 호출shared_ptr가 소멸될 때 리소스를 해제shared_ptr과 함께 사용되면서, 리소스에 소유권을 갖지 않는 약한 참조shared_ptr의 참조 카운트를 증가시키지 않음 -> 순환 참조 방지lock()을 통해 일시적으로 shared_ptr로 승격해서 사용 (리소스가 해제되었으면 nullptr 반환)-> 모두 내부적으로 Raw 포인터를 감싸고 있으므로, nullptr을 가질 수 있다.
-> 다만 주의할 점으로 weak_ptr은 명시적으로 = nullptr로 선언할 수는 없다.
shared_ptr는 내부적으로 참조 카운트를 이용해서 리소스 해제 시점을 결정shared_ptr로 소유하면, 참조 카운트가 0이 되지 않아 메모리 누수가 발생weak_ptr을 사용하여 리소스를 해제시킬 수 있음weak_ptr이 가리키고 있는 객체의 제어 블록을 확인함shared_ptr을 생성해서 반환nullptr을 담은 shared_ptr을 반환