WinAPI

모듈화, 메모리 영역

로만주 2023. 8. 11. 02:56

▶ 모듈화

ㄴ 함수, 사용자 정의 타입, 클래스 계층 구조, 템플릿 등 구성 요소들의 상호작용을 명확하게 정의하는 것.

ㄴ 모듈화의 첫 단계는 인터페이스와 구현을 분리하는 것이다.

▷ 분할 컴파일

ㄴ 각각 분리된 파일에 존재, 따로 컴파일 할 수 있어 프로그램을 반독립적 코드 조각 집합들로 조직화.

ㄴ 컴파일 시간 최소화, 논리적 구분 / 분리를 강제하므로 에러가 발생할 소지를 줄임.

 

 

▶  메모리 영역

1. Code 영역

ㄴ 실행할 코드가 저장 되어 있는 영역 (기계어 형태로 존재.)

ㄴ 컴파일 타임에 결정되고 중간에 코드를 바꿀 수 없게 Read-Only로 지정.

 

2. Data 영역

ㄴ 전역변수, static변수 등등이 저장되는 공간.

ㄴ 전역변수 / static 값을 참조한 코드는 컴파일 하고 나면 data 영역의 주소값을 가리키도록 변경.

 

3. Stack 영역

ㄴ 프로세스의 메모리 공간을 관리하기 위한 알고리즘 중 하나.

ㄴ 이 영역은 함수 안에서 선언된 지역변수, 매개변수, 리턴값, 돌아올 주소 등등이 저장.

ㄴ 후위선출(LIFO) 방식.

ㄴ 크기가 약 1MB이며, 컴파일 타임에 크기가 결정.

ㄴ 재귀함수가 너무 깊게 호출되거나 함수가 지역변수를 너무 많이 가지고 있을 경우 stack overflow 에러가 발생.

 

4. Heap 영역

ㄴ 할당과 해제를 프로그래머가 직접 해야 하는 영역

ㄴ 공간이 비교적 크고(32bit 최대 4GB) 크기는 런타임 때 정해진다.

 

▷ 컴파일 타임 vs 런타임

1. 소스코드를 작성하고 컴파일이라는 과정을 통해 기계어 코드로 변환되어 실행 가능한 프로그램이 되며, 이러한 편집 과정을 컴파일타임이라고 한다.

※ 컴파일 타임 에러 - 프로그램이 성공적으로 컴파일링 되는 것을 방해하는 신택스 에러나 파일 참조 오류와 같은 문제를 말하며, 이런 경우 컴파일러는 컴파일 타임 에러를 발생시키고 일반적으로 문제를 일으킨 소스코드 라인을 지시.

 

2. 컴파일과정을 마친 프로그램은 사용자에 의해 실행되어 지며, 이러한 응용프로그램이 동작되어지는 때를 런타임이라고 한다.

※ 런타임 에러 - 소스코드가 이미 실행가능한 프로그램으로 컴파일 되었다 할지라도 여전히 실행 중 버그가 발생할 수 있다. 예를 들면 예상 치 못한 오류 또는 충돌로 동작하지 않을 수 있는데 이렇게 프로그램이 실행 중에 발생하는 형태의 오류를 런타임오류이다.

'WinAPI' 카테고리의 다른 글

형상 관리  (0) 2023.08.17
타일맵  (0) 2023.08.13
캐스팅 연산자, 라운딩 에러  (0) 2023.08.10
사운드 매니저  (0) 2023.07.06
씬 전환, 폰트 매니저  (0) 2023.07.06