- 코드 영역 : 함수 및 상수가 저장 됌. main함수가 있는 곳이다. 프로그램의 실행명령이 있는 곳. 나머지 4영역들은 프로그램의 데이터가 있는 곳이다. RO (Read Only) 영역이라고도 하는데, 그 이유는 프로그램 실행 시에 데이터가 있는 영역의 값만 변경되고, 코드영역 자체의 값은 변경되지 않기 때문이다.
- 함수의 메모리 주소는 있으나 상수의 메모리 주소는 없다
- 데이터 영역: 전역변수 중에 초기화가 된 변수들이 있는 곳이다. 전역변수 inum=1; Static int num=1;
- BSS 영역: 전역변수 중에 초기화가 안 된 변수들이 있는 곳이다. 전역변수 inum; Static int num;
주소를 출력해 보면 2번과 3번의 주소가 인접해 있으나 다른 영역임을 알 수 있다. 임베디드 에서는 심볼 0으로 초기화 되어 있다 하여 ZI (zero initialization)이라 부른다.
- 힙 영역: 동적할당 (추후 상세 설명)
- 스택 영역: 지역변수 (추후 상세 설명)
프로그램 실행명령 (아이콘 더블클릭) -> 코드 영역, 데이터 영역, BSS 영역들이 메모리에 복사되어 순차적으로 처리된다.
이 영역들의 데이타는 컴파일 단계에서 생성된다.
반면 힙 영역과 스택 영역들의 데이타는 실행과정에서 생성된다.
- Static 변수 : 소속된 함수 내에서만 접근 가능하나, 그 외는 전역변수의 속성을 가진다. 즉, 이전 접근에서 변경한 값이 그대로 유지된다 (아래 코드에서 static 변수 inum1++ 참고).
이상으로 20140324 01 메모리 구조, 메모리 주소, 코드영역, 데이터영역, BSS 영역, 전역변수, static 변수에 대하여 알아보았다.
'C언어 업무보고' 카테고리의 다른 글
20140326 01 과일이름 출력, 반복문, 문자열,배열,포인터 배열 (0) | 2014.03.26 |
---|---|
20140324 02 재귀함수, recursive (0) | 2014.03.24 |
140321-2 함수의 지역변수, 함수의 반환형 (0) | 2014.03.21 |
20140321 함수. 함수의 선언과 정의, 헤더파일 (0) | 2014.03.21 |
140320 02 함수,메소드,프로시져,출력함수 리턴값, printf 반환형 (0) | 2014.03.20 |