본문 바로가기

프로그래밍

IsValidLowLevel과 IsValid 함수

728x90
728x90

IsValidLowLevelIsValid 함수는 언리얼 엔진 (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
반응형