컴파일과 런타임의 차이

코딩공통
읽는데 4분 소요
처음 쓰여진 날: 2026-02-03
마지막 수정일: 2026-02-10
조회수: 90

요약

컴파일 시점과 런타임 시점의 차이를 알아봅니다. C, Java, Python 공통 개념으로, 메모리 구조와 동적 메모리 할당을 이해하기 위한 필수 배경 지식입니다.

핵심 정리

구분컴파일 시점런타임 시점
시점소스 코드 → 실행 파일 변환 시프로그램 실행 중
결정되는 것배열 크기, 지역 변수 크기, 타입malloc 크기, 사용자 입력
오류문법 오류, 타입 오류0으로 나누기, 널 포인터 접근

컴파일이란?

컴파일(Compile) 은 사람이 작성한 소스 코드를 컴퓨터가 이해할 수 있는 기계어로 변환하는 과정입니다.

text
코드 하이라이팅 중...
c
코드 하이라이팅 중...

위 코드를 컴파일하면 실행 가능한 파일이 생성됩니다.

bash
코드 하이라이팅 중...

런타임이란?

런타임(Runtime) 은 프로그램이 실제로 실행되는 시점을 의미합니다.

단계설명
1. 작성소스 코드 작성 (.c 파일)
2. 컴파일소스 코드 → 실행 파일 변환
3. 런타임실행 파일을 실행하는 시점

런타임에는 사용자 입력을 받거나, 파일을 읽거나, 네트워크 통신을 하는 등 실행 중에만 알 수 있는 일들이 발생합니다.

c
코드 하이라이팅 중...


컴파일 시점에 결정되는 것

컴파일러가 코드를 분석할 때 미리 알 수 있는 것들입니다.

1. 배열 크기

c
코드 하이라이팅 중...

배열 크기는 컴파일 시점에 상수로 지정해야 합니다.

c
코드 하이라이팅 중...

2. 지역 변수 크기

c
코드 하이라이팅 중...

함수 호출 시 스택에 얼마만큼의 공간이 필요한지 컴파일러가 미리 계산합니다.

3. 자료형 크기

c
코드 하이라이팅 중...

sizeof 연산자의 결과값은 컴파일 시점에 확정됩니다.


런타임에 결정되는 것

프로그램 실행 중에만 알 수 있는 것들입니다.

1. malloc 크기

c
코드 하이라이팅 중...

동적 메모리 할당은 런타임에 크기를 결정할 수 있는 대표적인 방법입니다.

2. 사용자 입력

c
코드 하이라이팅 중...

3. 조건문 결과

c
코드 하이라이팅 중...

4. 파일 내용

c
코드 하이라이팅 중...

컴파일 에러 vs 런타임 에러

컴파일 에러

컴파일 에러는 컴파일 과정에서 발견되는 오류입니다. 프로그램이 아예 실행 파일로 만들어지지 않습니다.

c
코드 하이라이팅 중...
컴파일 에러 종류예시
문법 오류세미콜론 누락, 괄호 불일치
타입 불일치intchar* 대입
선언되지 않은 변수prinft (오타)
잘못된 연산10 + "hello"

런타임 에러

런타임 에러는 프로그램 실행 중에 발생하는 오류입니다. 컴파일은 성공했지만 실행 중에 문제가 생깁니다.

c
코드 하이라이팅 중...
런타임 에러 종류예시
0으로 나누기a / 0
널 포인터 역참조*NULL
배열 범위 초과arr[1000] (크기가 10인 배열)
스택 오버플로우무한 재귀 호출
메모리 부족너무 큰 malloc

정리: 컴파일 vs 런타임

구분컴파일 시점런타임 시점
언제코드 → 실행 파일 변환 시프로그램 실행 중
메모리 할당스택 변수, 배열 크기malloc, 동적 배열
오류 발견문법, 타입 오류논리 오류, 예외 상황
오류 시실행 파일 생성 안 됨프로그램 비정상 종료

이 개념을 이해하면 메모리 구조에서 스택과 힙의 차이, 동적 메모리 할당에서 malloc이 필요한 이유를 더 잘 이해할 수 있습니다.