TStrongObjectPtr와 TWeakObjectPtr는 Unreal Engine에서 객체를 관리하는 데 사용되는 포인터 유형입니다. 이 두 포인터는 메모리 관리와 객체의 생명 주기를 다루는 방식에서 중요한 차이를 가지고 있습니다.
TStrongObjectPtr
정의: TStrongObjectPtr는 객체에 대한 강한 참조를 유지합니다. 즉, 이 포인터가 존재하는 동안 해당 객체는 메모리에서 해제되지 않습니다.
특징:
객체의 생명 주기를 보장합니다.
객체가 유효한지 확인할 필요 없이 안전하게 사용할 수 있습니다.
일반적으로 UPROPERTY()와 함께 사용되어 Unreal Engine의 가비지 컬렉션 시스템과 통합됩니다 5.
TWeakObjectPtr
정의: TWeakObjectPtr는 객체에 대한 약한 참조를 유지합니다. 이 포인터는 객체가 메모리에서 해제될 수 있도록 허용하며, 객체가 해제되면 이 포인터는 더 이상 유효하지 않게 됩니다.
특징:
객체가 유효한지 확인해야 하며, IsValid() 메서드를 사용하여 확인할 수 있습니다.
메모리 누수를 방지하는 데 유용하며, 가비지 컬렉션이 발생할 수 있는 상황에서 안전하게 사용할 수 있습니다 6.
주요 차이점 요약
생명 주기 관리:
TStrongObjectPtr: 객체의 생명 주기를 보장.
TWeakObjectPtr: 객체가 해제될 수 있으며, 유효성을 확인해야 함.
사용 용도:
TStrongObjectPtr: 객체가 항상 필요할 때 사용.
TWeakObjectPtr: 객체가 필요할 때만 사용하고, 메모리 관리가 중요한 경우에 적합.
이 두 포인터는 Unreal Engine에서 객체를 안전하게 관리하는 데 필수적인 도구입니다. TStrongObjectPtr는 객체의 생명 주기를 보장하는 반면, TWeakObjectPtr는 메모리 누수를 방지하는 데 도움을 줍니다. 이러한 차이를 이해하면 Unreal Engine에서의 메모리 관리와 객체 생명 주기를 보다 효과적으로 다룰 수 있습니다.