2024. 4. 9. 22:21ㆍCS
컴퓨터 프로그램이 실행되는 동안, 메모리는 여러 영역으로 분할되어 각기 다른 역할을 수행합니다. 이러한 메모리 영역의 구분은 프로그램의 효율적인 실행과 데이터 관리에 필수적입니다. 본 글에서는 스택, 힙, 코드, 데이터 영역이라는 네 가지 주요 메모리 영역에 대해 알아보겠습니다.
1. 코드 영역(Code Area)
코드 영역은 프로그램의 실행 파일에 포함된 기계어 코드가 저장되는 곳입니다. 즉, 프로그램이 실행될 때 CPU가 읽고 실행하는 명령어들이 위치하는 영역입니다. 이 영역은 읽기 전용으로 설정되어 있어 프로그램 실행 동안 코드가 변경되지 않도록 보호됩니다.
2. 데이터 영역(Data Area)
데이터 영역은 프로그램의 전역 변수와 정적 변수가 저장되는 영역입니다. 프로그램의 시작과 동시에 할당되며, 프로그램이 종료될 때까지 유지됩니다. 전역 변수와 정적 변수는 프로그램의 어느 위치에서든 접근할 수 있으며, 이 영역 또한 초기화된 데이터와 초기화되지 않은 데이터로 나뉩니다.
3. 스택 영역(Stack Area)
스택 영역은 함수의 호출과 함께 할당되는 지역 변수, 매개변수, 반환 주소 및 함수의 호출과 관련된 정보를 저장하는데 사용됩니다. 스택은 LIFO(Last In, First Out) 방식을 따르는 자료구조로, 함수 호출이 종료되면 사용했던 스택 프레임은 해제됩니다. 스택 영역은 컴파일 시간에 크기가 결정되며, 자동 메모리 할당과 해제가 이루어집니다.
4. 힙 영역(Heap Area)
힙 영역은 동적으로 할당되는 메모리가 저장되는 곳으로, 프로그래머가 직접 관리할 수 있는 메모리 영역입니다. 즉, 프로그램 실행 도중 필요에 따라 메모리를 할당받고, 사용이 끝난 후에는 해당 메모리를 해제해야 합니다. 힙 영역은 스택 영역과 달리 할당과 해제가 런타임에 이루어지며, 메모리의 할당과 해제를 프로그래머가 직접 제어해야 합니다.
'CS' 카테고리의 다른 글
| 비트(bit)란? (1) | 2024.05.01 |
|---|---|
| 자바(JAVA) 컬렉션(Collection) (1) | 2024.04.19 |
| [JAVA] Garbage Collection(가비지 컬렉션) (1) | 2024.04.13 |
| CPU 스케줄링 (0) | 2024.04.04 |
| 프로세스(Process)와 스레드(Thread) (0) | 2024.04.01 |