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