본문 바로가기
Unreal5

[언리얼5] 스마트포인터(MakeShareable, .ToSharedRef())

by 위니밍 2025. 8. 3.
반응형
SessionSearch = MakeShareable(new FOnlineSessionSearch());
OnlineSessionInterface->FindSessions(*LocalPlayer->GetPreferredUniqueNetId(), SessionSearch.ToSharedRef());

 

스마트 포인터(TSharedPtr)의 역할

스마트 포인터는 자신이 관리하는 객체가 몇 군데에서 사용되고 있는지 항상 개수를 셉니다. (이를 '참조 카운팅'이라고 합니다)

  1. MakeShareable로 SessionSearch를 만들면, 참조 카운트는 1이 됩니다.
  2. OnlineSessionInterface->FindSessions(...) 함수에 이 SessionSearch를 전달하면, 온라인 시스템도 이 객체를 사용하게 되므로 참조 카운트는 2가 됩니다.
  3. FindSessions 함수가 끝나면, 지역 변수로서의 SessionSearch는 사라지므로 참조 카운트는 다시 1이 됩니다.
  4. 하지만 참조 카운트가 아직 0이 아니기 때문에, '세션 검색 조건' 객체는 메모리에서 사라지지 않고 계속 살아남습니다.
  5. 이후 백그라운드에서 검색 작업이 완전히 끝나면, 온라인 시스템이 "나 이제 다 썼어"라고 알려주고 참조 카운트는 마침내 0이 됩니다. 이때 비로소 객체는 메모리에서 안전하게 제거됩니다.
반응형