관리 메뉴

기억을 위한 기록들

[UE4-CPP] 스마트포인터 본문

UnrealEngine/UE4 - CPP

[UE4-CPP] 스마트포인터

에드윈H 2021. 1. 28. 20:39

언리얼 스마트 포인터 라이브러리(Unreal Smart Pointer Library) 는 메모리 할당과 추적의 부담을 해소해주도록 설계된 C++11 스마트 포인터들의 커스텀 구현입니다.

 

이 구현에는 업계 표준인 쉐어드 포인터(Shared Pointers)위크 포인터(Weak Pointers) 그리고 유니크 포인터(Unique Pointers) 가 포함되어 있습니다.

 

또한, null이 불가능한(non-nullable) 쉐어드 포인터와 같은 역할을 하는 쉐어드 레퍼런스(Shared References) 도 추가되었습니다.

 

단, 언리얼 오브젝트는 게임 코드에 더 최적화된 별도의 메모리 추적 시스템을 사용하기 때문에 이러한 클래스들은 ‘UObject' 시스템과 사용할 수 없습니다. -언리얼 엔진 공식 문서 중...-

 

 

 

UE4에서의 스마트포인터

  • Shared Pointers(공유 포인터) : 오브젝트를 참조하며, 삭제 방지. 참조하는 공유포인터가 없으면 오브젝트 소멸. 
  • Weak Pointers(약 포인터) : 공유 포인터와 비슷함. 하지만 소유하지 않기에 생명주기에 영향 못줌. 
  • Unique Pointers(유니크 포인터) : 참조하는 오브젝트를 유일하고 명시적으로 소유.
  • Shared References(공유 레퍼런스) : 공유 포인터와 같은 역할. 하지만, Null 오브,젝트관련해 차이점은 항상 null이 불가능한 오브젝트를 참조해야함. 반면에 공유 포인터는 그런 제약이 없음. 참조한 오브젝트가 null이 불가능한 오브젝트라는 것을 보장 하길 원하거나 공유된 오브젝트 소유권을 보여주길 원할 경우에 공유 레퍼런스 사용.

 

 

스마트포인터의 장점(공식문서)

 

 

스마트포인터의 퍼포먼스 이점(공식문서)

스마트포인터의 퍼포먼스 문제점(공식문서)