.text)하는 일: 프로그램의 실행 코드(기계어 명령) 가 저장되는 영역.
특징:
예: main() 함수 내부의 명령들이 여기 저장되어 실행됨.
데이터를 저장하는 두 부분으로 나뉩니다.
초기화된 데이터 영역 (Initialized Data, .data)
int a = 10;초기화되지 않은 데이터 영역 (Uninitialized Data, .bss)
int count;하는 일: 실행 중에 동적으로 할당되는 메모리.
특징:
malloc, new 같은 함수를 통해 직접 관리.free, delete로 해제해야 함.예: 동적으로 배열 만들기 → int *arr = malloc(100 * sizeof(int));
하는 일: 함수 호출 시 지역 변수, 매개변수, 리턴 주소 등이 저장되는 공간.
특징:
예:
void foo(int x) {
int y = 5; // 지역 변수 y는 스택에 저장됨
}
커널 영역 (Kernel Space)
라이브러리 영역 (Shared Libraries, .so, .dll)
| 영역 | 저장 내용 | 특징 |
|---|---|---|
| .text (코드) | 실행 명령어 | 읽기 전용, 프로그램 실행 코드 |
| .data | 초기화된 전역/정적 변수 | 실행 중에도 값 변경 가능 |
| .bss | 초기화 안 된 전역/정적 변수 | 실행 시 0으로 초기화 |
| Heap (힙) | 동적 메모리 | 개발자가 직접 관리 (malloc/free) |
| Stack (스택) | 지역 변수, 매개변수, 함수 호출 정보 | 자동 관리, LIFO, 크기 제한 있음 |
| Kernel | 운영체제 코드/데이터 | 사용자 프로그램 직접 접근 불가 |
👉 정리하면: