728x90
반응형
언리얼 스마트 포인터
C++에도 스마트 포인터가 있듯이, 언리얼 엔진도 스마트 포인터 라이브러리가 있다.
기존 C++의 포인터 문제와 같이 언리얼의 일반 C++ 오브젝트도 똑같이 포인터 문제가 있기에 일반 C++ 오브젝트의 메모리 할당과 추적의 부담을 해소해 주도록 설계된 라이브러리이다.
단, 언리얼 오브젝트는 게임 코드에 더 최적화된 별도의 메모리 추적 시스템을 사용하기 때문에 이러한 클래스들은 'UObject' 시스템과 사용할 수 없다.
TSharedPtr
- 기본값은 NULL 값이다.
- 객체에 대해 여러 개의 스마트 포인터가 소유권을 공유한다.
- 객체의 참조 카운트를 관리하며, 참조 카운트가 0이 되면 객체가 제거된다.
TSharedPtr<class ACharacter> MyCharacter;
TSharedRef
- TSharedPtr과 유사하지만, 객체의 참조가 항상 유효하다고 보장된다. (NULL 체크 필요 없음)
- 참조가 무조건 유효해야 하는 상황에서 유용하게 사용된다.
TSharedRef<class ACharacter> MyCharacter;
TWeakPtr
- TSharedPtr과 함께 사용되며, 객체에 대한 약한 참조를 유지한다.
- TSharedPtr의 순환 참조 문제를 방지하는 데 사용된다.
- 참조 카운트에는 영향을 주지 않으며, 객체가 파괴되었는지 확인하는 데 유용하다.
- TWeakPtr을 통해 자주 캐스팅해 가져와야 하는 객체를 캐시처럼 사용할 수 있다.
- 객체를 약한 참조를 통해 저장하여, 객체를 캐스팅하여 가져와야 할 때 캐스팅 대신 저장된 참조 데이터를 사용한다.
- 원본 객체가 삭제되면, 약한 참조를 유지하기 때문에 문제없이 바로 삭제된다.
TWeakObjectPtr<class ACharacter> MyCharacter;
TUniquePtr
- 객체의 소유권이 단일 포인터에 한정된다.
- TUniquePtr은 객체의 소유권을 다른 포인터로 이전할 수 있지만 복사할 수는 없다.
- 특정 객체가 단 하나의 소유자만 가지는 경우 사용된다.
TUniquePtr<class ACharacter> MyCharacter;
728x90
반응형
'📘Unreal Engine > 📝Unreal Engine' 카테고리의 다른 글
[Unreal Engine] 생성자 초기화를 통한 클래스 내부에 정의된 클래스 변경 (0) | 2025.01.20 |
---|---|
[Unreal Engine] Transient 키워드 (0) | 2025.01.17 |
[Unreal engine] ExposeOnSpawn 메타데이터 지정자 (0) | 2024.11.19 |
[Unreal Engine] 행동 트리(Behavior Tree) 구조 (0) | 2024.08.19 |
[Unreal Engine] 충돌 판정 / 트레이싱 (Tracing) (0) | 2024.08.09 |