TObjectPtr
과 일반적인 포인터(*
)의 차이점은 Unreal Engine의 메모리 관리, 특히 가비지 컬렉션과 관련이 있으며, TObjectPtr
은 옵션으로 지연 로드(lazy load)를 지원하는 방식입니다.
TObjectPtr
vs 일반 포인터(*
)의 차이점*
)TObjectPtr
GC
(Garbage Collection) 시스템에서 안전하게 관리할 수 있습니다.TObjectPtr
은 지연 로드(Lazy Load) 기능을 옵션으로 지원하여, 객체에 실제로 접근할 때만 로드할 수 있습니다. 이를 통해 메모리와 성능을 최적화할 수 있으며, 특히 대규모 데이터셋이 있을 때 유용합니다.
TObjectPtr
을 사용해 지연 로드 설정을 활성화하면, 리소스 전체를 로드하지 않고 필요한 시점에만 데이터를 로드합니다.다음은 TObjectPtr
을 사용하여 지연 로드할 객체를 선언하고 사용하는 예제입니다.
// UObject 타입 객체의 지연 로드 설정
TObjectPtr<UTexture2D> LazyTexture;
void MyFunction()
{
if (LazyTexture) // 실제 접근 시점에만 로드
{
// LazyTexture가 실제로 로드되어 접근 가능해진 상태입니다.
}
}
이 예제에서는 LazyTexture
에 접근할 때만 객체가 메모리에 로드됩니다. 접근하지 않으면 메모리가 낭비되지 않으며, 성능이 필요한 시점에만 메모리 로드가 이루어집니다.
TObjectPtr
은 Unreal Engine의 가비지 컬렉션 시스템과 연동되어 메모리를 안전하게 관리하고, 지연 로드를 통해 최적화를 지원합니다.*
)는 직접 메모리 관리를 해야 하며, 잘못된 메모리 접근을 방지하지 못합니다.