메모리(RAM) 구조란?
- 메모리 공간 종류
- Code (코드 영역)
- 실행할 프로그램의 코드
- Data (데이터 영역)
- 전역 변수 , 정적 변수
- Heap (힙 영역)
- 사용자의 동적 할당
- 런 타임에 크기가 결정됨
- Stack (스택 영역)
- 지역 변수, 매개 변수
- 컴파일 타임에 크기가 결정됨
- Code (코드 영역)
컴파일 타임 과 런타임
컴파일 (Compiletime)
- 프로그램을 생성하기 위해 개발자는 첫째로 소스코드를 작성하고 컴파일이라는 과정을 통해 기계어코드로 변환 되어 실행 가능한 프로그램이 되며, 이러한 편집 과정을 컴파일 타임이라고 합니다.
컴파일 타임 에러 (Compile time error)
- 소스코드가 컴파일 되는 과정 중에 발생하는 문제들로 인해 컴파일이 방해되어 발생하는 오류들을 의미합니다.
- Syntax error ( 구문 에러 )
- Type check error ( 변수나 매개변수가 유효한 유형이 아닐때 발생하는 에러 )
런타임 (Runtime)
- 컴파일 과정을 마친 프로그램은 사용자에 의해 실행되어 지며, 이러한 응용 프로그램이 동작되어지는 때를 런타임 (Runtime) 이라고 합니다.
런타임에러 (Runtime error)
- 이미 컴파일이 완료되어 프로그램이 실행중임에도 불구하고, 의도치 않은 예외상황으로 인하여 프로그램 실행 중에 발생하는 오류 형태를 의미합니다.
- 0 나누기 오류
- Null 참조 오류
- 메모리 부족 오류 등
* 메모리 구조에는 4가지의 종류인 Code, Data, Heap, Stack 이 있습니다.
Code 는 소스코드가 들어가는 부분이고
Data는 전역변수, 정적변수가 할당되는 부분입니다.
Heap 은 사용자가 직접 관리하는 영역으로 데이터가 동적으로 할당되는 부분이고,
Stack 은 함수의 호출정보, 지역변수, 매개변수들이 저장되는 곳입니다.