728x90
728x90
IsValidLowLevel과 IsValid 함수는 언리얼 엔진 (UE)에서 객체 또는 액터의 유효성을 판단하는 데 사용됩니다.
IsValidLowLevel
- 목적: 객체의 기본 메모리가 유효하고 접근 가능한지 확인합니다.
- 반환값: 객체의 메모리가 유효하면 true, 그렇지 않으면 false를 반환합니다.
- 사용 사례:
- 객체가 nullptr이거나 dangling pointer가 아닌지 확인해야 할 때
- 메모리 손상이나 잘못된 메모리 접근을 확인하기 위한 저수준 검사를 수행해야 할 때
IsValid
- 목적: 객체가 유효하고 사용할 수 있는지 확인합니다.
- 반환값: 객체가 유효하면 true, 그렇지 않으면 false를 반환합니다.
- 사용 사례:
- 객체가 nullptr이거나 삭제되지 않았는지 확인해야 할 때
- 객체가 세계에서 여전히 활성 상태인지 또는 장면에서 제거되었는지 확인하는 등 더 높은 수준의 검사를 수행해야 할 때
주요 차이점
- 검사 수준: IsValidLowLevel은 객체의 메모리에 대한 저수준 검사를 수행하고, IsValid는 더 포괄적인 검사를 수행하여 객체의 유효성과 사용 가능성을 확인합니다.
- 사용 사례: IsValidLowLevel은 주로 메모리 안전성을 보장하고 충돌을 방지하는 데 사용되며, IsValid는 객체의 전반적인 유효성과 사용 가능성을 확인하는 데 사용됩니다.
예시
C++
AActor* myActor = GetWorld()->SpawnActor<AActor>(AActor::StaticClass());
if (myActor->IsValidLowLevel())
{
// 액터의 메모리가 유효합니다
UE_LOG(LogTemp, Warning, TEXT("Actor memory is valid"));
}
if (myActor->IsValid())
{
// 액터가 유효하고 사용할 수 있습니다
UE_LOG(LogTemp, Warning, TEXT("Actor is valid"));
}
코드를 사용할 때는 주의가 필요합니다.
위 예시에서 IsValidLowLevel은 액터의 메모리가 유효한지 확인하고, IsValid는 액터가 실제로 세계에서 활성 상태이고 사용할 수 있는지 확인합니다.
요약:
- IsValidLowLevel: 객체의 메모리 유효성 확인 (저수준 검사)
- IsValid: 객체의 전반적인 유효성 및 사용 가능성 확인 (고수준 검사)
언제 사용해야 할까요?
- 객체에 접근하기 전에 항상 IsValidLowLevel을 사용하여 메모리 손상을 방지합니다.
- 객체를 실제로 사용하기 전에 IsValid를 사용하여 객체가 유효한지 확인합니다.
728x90
반응형
'프로그래밍' 카테고리의 다른 글
언리얼5에서 파라미터 전달 타이머 만들기 (1) | 2024.11.04 |
---|---|
UHierarchicalInstancedStaticMeshComponent 에서 인스턴스 제거 시 인덱스 변화 (4) | 2024.10.18 |
Unreal Engine의 스마트 포인터 WeakObjectPtr, TSharedPtr, TObjectPtr 비교 (0) | 2024.09.26 |
"DOREPLIFETIME_CONDITION"를 사용해서 생성 시 한번만 동기화 하기 (1) | 2024.09.25 |
EPhysicalSurface를 FString으로 변환하는 방법 (1) | 2024.09.23 |