컴파일 타임 vs 런타임: 개발자가 꼭 알아야 할 핵심 개념 정리

Bean·2025년 6월 24일

프로그래밍

목록 보기
2/49

프로그래밍을 하다 보면 "컴파일 타임(Compile Time)""런타임(Run Time)"이라는 용어를 자주 접하게 됩니다. 특히 오류 메시지를 분석하거나, 성능을 최적화할 때 이 둘의 개념을 정확히 이해하는 것이 매우 중요합니다.

이 글에서는 컴파일 타임과 런타임의 차이를 쉽고 명확하게 설명해 드리겠습니다.


✅ 컴파일 타임과 런타임, 무엇이 다른가요?

구분컴파일 시간 (Compile Time)런타임 (Run Time)
의미코드를 기계어로 번역하는 시점번역된 프로그램이 실제로 실행되는 시점
언제 발생?프로그램을 빌드(compile)할 때사용자가 프로그램을 실행할 때
누가 처리?컴파일러 (g++, clang, MSVC 등)CPU, 운영체제(OS)
하는 일문법 검사, 변수 타입 확인, 최적화 등입력 처리, 계산, 출력 등 로직 실행
오류 종류컴파일 오류 (예: 문법 오류, 타입 불일치)런타임 오류 (예: 0으로 나누기, 널 포인터 접근)

✅ 쉬운 비유: 컴파일 vs 런타임

🧩 컴파일 타임은 마치 레고 설명서를 해석하고 조립 순서를 계획하는 단계
🔧 런타임은 그 설명서에 따라 실제로 레고를 조립하는 단계

계획을 잘못 세우면 조립도 안 되겠죠? 마찬가지로, 컴파일 타임에 문제가 있으면 실행조차 되지 않습니다.


✅ 예시 코드로 이해하는 컴파일 타임 vs 런타임

constexpr int a = 3 + 4;  // 컴파일 타임에 계산됨
int main() {
    int x;
    std::cin >> x;        // 런타임에 사용자 입력 받음
    std::cout << x * a;   // 런타임에 결과 출력
}
  • constexpr int a = 3 + 4;컴파일 타임에 계산됨
  • std::cin >> x;런타임에 입력 받음
  • x * ax는 실행 중 결정되므로 이 곱셈도 런타임 연산

✅ 오류의 예: 컴파일 vs 런타임

컴파일 오류 예시

int x = "hello"; // 문자열을 int에 저장하려 해서 컴파일 오류 발생

→ 타입이 맞지 않아서 컴파일러가 실행 전에 바로 잡아줍니다.

런타임 오류 예시

int x = 0;
int y = 10 / x;  // 실행 중 0으로 나누기 때문에 런타임 오류 발생

→ 컴파일 시에는 몰랐지만, 실행 중 문제 발생.


✅ 핵심 요점 정리

  • 컴파일 타임: 프로그램을 “번역”하는 시간
    → 문법 오류, 타입 검사, 최적화 등
  • 런타임: 프로그램이 “실행”되는 시간
    → 사용자 입력, 계산, 결과 출력 등

이 두 개념을 명확히 구분하면 오류 디버깅이나 프로그램 흐름 이해에 큰 도움이 됩니다.


profile
AI developer

0개의 댓글