언리얼 실행 환경은 메모리에 떠있는 언리얼 오브젝트가 사용 중인지 아닌지를 주기적으로 검사하고, 사용하지 않는 물체를 발견하면 메모리에서 자동으로 제거합니다. 이를 가비지 컬렉션(Garbage Collection)이라고 합니다.
언리얼 오브젝트가 사용 중인지 여부는 다른 언리얼 오브젝트가 해당 오브젝트를 참조하는지로 판단하는데, 예를 들어 FHitResult의 멤버 변수 Actor의 선언이 일반 참조로 선언된다면 해당 함수에서의 참조로 인해 제거돼야 할 액터가 메모리에 그대로 남아있는 문제가 발생할 수 있습니다. 이런 문제를 방지하기 위해 FHitResult는 참조로부터 자유롭게 포인터 정보를 전달해주는 약 포인터(TWeakObjectPtr) 방식으로 멤버 변수를 선언했습니다.
약포인터로 지정된 액터에 접근하려면 IsValid 함수를 사용해 사용하려는 액터가 유효한지 먼저 점검하고 사용해야 합니다.
'Unreal Engine > C++' 카테고리의 다른 글
[Unreal Engine 4 C++] DrawDebugLine의 InWorld인자 주의점 (0) | 2022.03.04 |
---|---|
[Unreal Engine 4 C++] FRotator로 ForwardVector와 RightVector 구하기 (0) | 2022.02.07 |
[Unreal Engine 4 C++] 델리게이트에서 AddUObject, AddUFunction (0) | 2021.10.14 |
[Unreal Engine 4 C++] Timeline에 등록한 Curve 변경하기 (0) | 2021.08.19 |
[Unreal Engine 4 C++] Enum의 DisPlayName을 String으로 변환하는 법 (0) | 2021.05.19 |