런타임(Runtime)이란?

프로그램이 실제로 실행되고 있는 시간


프로그램의 과정

코드 작성

컴파일

실행

종료

이 과정에서

컴파일 타임(Compile Time)

코드 작성 ~ 실행 파일 생성

예시

int Num = "Hello";

이건 컴파일할 때

타입이 안 맞음

이라고 에러가 납니다.

즉 컴파일 타임 에러입니다.


런타임(Runtime)

프로그램 실행 후 ~ 종료 전

예시

int Num = 10;
int Result = Num / 0;

컴파일은 됩니다.

하지만 게임을 실행하면

0으로 나눔

문제가 발생합니다.

이건 런타임 에러입니다.


언리얼에서 예시

컴파일 타임

AActor* Actor = nullptr
 
// 세미콜론 없음

컴파일 자체가 안 됨


런타임

AActor* Actor = nullptr;
Actor->Destroy();

컴파일은 성공

게임 실행 중 크래시 발생


리플렉션 설명에서 왜 런타임이 나오나?

예를 들어

UPROPERTY(EditAnywhere)
float MoveSpeed;

언리얼은 게임이 실행 중일 때

이 변수 이름이 뭐지?
자료형이 뭐지?
블루프린트에 보여줄까?
저장할까?

를 알아야 합니다.

일반 C++은 실행 후 이런 정보를 대부분 잃어버립니다.

그래서 언리얼은 리플렉션 시스템으로

클래스 정보
함수 정보
변수 정보

를 런타임에도 가지고 있습니다.


컴파일 타임과 차이

구분시점예시
컴파일 타임빌드 중문법 오류
런타임실행 중Null Pointer 접근

예를 들어

AActor* Actor = nullptr;
Actor->Destroy();

는 컴파일은 성공하지만 실행 중 크래시가 발생하므로 런타임 오류입니다.


게임 개발에서 자주 듣는 말

런타임 생성

GetWorld()->SpawnActor();

게임 실행 중 객체 생성


런타임 체크

if (Actor)
{
    Actor->Destroy();
}

실행 중 nullptr 여부 확인


런타임 정보

GetClass()
GetName()
Cast<>

게임 실행 중 객체 정보를 얻는 것

이런 표현들이 전부 “게임이 실행되고 있는 동안” 을 의미합니다.