TSharedPtr, TSharedRef

2022. 3. 21. 00:13·Unreal Engine 4/Unreal Engine 4
반응형

원시포인터를 사용하지 않길 원하면서 C++코드에서 수동으로 UObject 파생이 아닌 오브젝트를 추적하고 삭제하는 상황에 TSharedPtr, TSharedRef같은 스마트 포인터가 좋은 후보이다.

 

TSharedPtr :

1. 쓰레드로부터 안전한 참조 카운터 포인터 타입으로 공유 오브젝트를 나타낸다.

-> 두 번째 파라미터를 ESPMODE::ThreadSafe를 전달한 경우

2. 공유 오브젝트는 더 이상 참조가 없을 때 할당 해제된다.

TAutoPtr

1. 쓰레드로부터 안전하지 않은 공유 포인터

 

C++ 원시포인터를 가져다가 TSharedPtr, TSharedRef, TWeakPtr, TAutoPtr중 하나에 해당하는 생성자 호출로 포장하면 된다.

ex) 

//UObject에서 파상되지 않은 C++ 클래스

class MyClass { };

TSharedPtr<MyClass> sharedPtr(new MyClass());

 

weak pointer와 shared pointer의 차이

weak pointer는 참조 카운터 0으로 내려갈 때  오브젝트를 지우지 않고 유지하는 기능이 없다.

weak pointer(원시 포인터 사용)를 사용하면, weak pointer아래 있는 오브젝트를 수동으로 삭제하면 weak pointer의 참조는 NULL이 된다. 

ptr.IsValid()를 통하여 포인터가 유효한지 검사를 할 수 있다.

 

공유 포인터는 쓰레드로부터 안전하다.

-> 이는 기본 오브젝트를 별도의 쓰레드에서 안전하게 조작할 수 있다는 의미

 

TSharedRef는 UObject또는 UObject 파생에서 사용 불가하며, 커스텀 C++클래스에서만 사용 가능

 

FStructure는 TSharedPtr, TSharedRef, TWeakPtr 클래스를 사용해 원시 포인터를 감쌀 수 있다.

 

스마트 포인터를 사용하여 오브젝트를 가리키려면 TWeakObjectPointer 또는 UPROPERTY()를 사용해야 한다.


TSharedPtr의 쓰레드 안전성을 보장하지 않아도 된다면 TAutoPtr을 사용할 수 있다. TAutoPtr은 참조의 수가 0으로 떨어지면 자동으로 오브젝트를 지운다.

반응형
저작자표시 (새창열림)

'Unreal Engine 4 > Unreal Engine 4' 카테고리의 다른 글

UPROPERTY()와 언리얼의 가비지 컬렉션 시스템  (0) 2022.03.21
TScopedPointer  (0) 2022.03.21
UObject 파생 클래스를 제거하는 방법  (3) 2022.03.16
Actor 클래스와 UObject에서 파생된 클래스의 인스턴스화  (0) 2022.03.14
UE4 예상 되는 클래스 타입을 지정하는 다양한 방법  (1) 2022.03.14
'Unreal Engine 4/Unreal Engine 4' 카테고리의 다른 글
  • UPROPERTY()와 언리얼의 가비지 컬렉션 시스템
  • TScopedPointer
  • UObject 파생 클래스를 제거하는 방법
  • Actor 클래스와 UObject에서 파생된 클래스의 인스턴스화
숯불돼지왕갈비
숯불돼지왕갈비
  • 숯불돼지왕갈비
    게임 개발 공부기
    숯불돼지왕갈비
  • 전체
    오늘
    어제
    • 분류 전체보기 (303) N
      • 학교수업 (165)
      • 취업강의 (6)
      • C++ (46) N
        • 코딩 테스트 (4)
      • Unreal Engine 5 (25)
        • MMORPG 개발 (25)
      • Unreal Engine 4 (44)
        • Omak Project (3)
        • Unreal Engine 4 개발일지 (9)
        • Unreal Engine 4 (32)
      • Unity (1)
        • 개발 일지 (1)
      • 수학 (3)
        • 소프트웨어 공학용 수학 (3)
      • DirectX 11 (4)
      • 게임 디자인 패턴 (2)
      • 포트폴리오 (1)
      • 자격증 (1)
        • 정보처리기사 (0)
        • SQLD (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
숯불돼지왕갈비
TSharedPtr, TSharedRef
상단으로

티스토리툴바