반응형
목차
- 코드(code) 영역
- 데이터(Data) 영역
- 힙(Heap) 영역
- 스택(Stack) 영역

1. 코드(Code) 영역
- 프로그램의 실행 코드(기계어 명령어)가 저장되는 영역
- 주로 읽기 전용(read-only)으로 설정 되어 있어,
실행 중인 프로그램이 코드를 수정하는 것을 방지한다. - 프로그램이 시작될 때 메모리에 로드되고 프로그램이 종료될 때까지 유지된다.
특징
- 읽기 전용: 대부분의 코드 영역은 일기 전용이고 실행중인 프로그램이 자신을 바꿀 수 없다.
- 정적 할당: 프로그램이 시작될 때 크기와 내용이 결정되고 변경되지 않는다.
2. 데이터(Data) 영역
- 전역 변수(global variables), 정적변수(static variables), 상수(constant data)가 저장되는 메모리 영역이다.
- 프로그램이 시작될 떄 할당 되서 종료될 떄 까지 유지된다.
특징
- 정적 데이터: 전역 변수와 정적 변수가 저장된다.
- 초기화된 데이터: 초기값이 있는 데이터는 데이터 영역의 초기화 된 부분에 저장된다.
- 초기화 되지 않은 데이터: BSS(Block Started by Symbol)에 저장되며 기본값(주로 0)으로 초기화 된다.
3. 힙(Heep) 영역
- 동적 메모리 할당(dynamic memory allocation)에 사용되는 메모리 영역이다.
프로그래머가 원하는 형태대로 쓸 수 있는 공간이다. - 'malloc', 'calloc', realloc' 등으로 받고 'free'로 해제한다.
특징
- 동적할당: 사용자가 할당하고, 소멸시킬 수 있다.
- 유연성: 프로그램 실행 중 크기를 변경할 수 있다.
- 메모리 누수 위험: 할당된 메모리는 자동으로 소멸 되지 않아 메모리 누수가 발생 할 수 있다.
4. 스택(Stack) 영역
- 지역변수, 매개변수가 저장되는 메모리 영역이다.
함수 호출 시 스택 프레임(stack frame)이 생성되고, 종료되면 없어진다. - 아주 잠깐 사용하고 삭제할 데이터의 저장공간으로 쓰인다.
LIFO(Last In, First Out)구조를 따른다.
특징
- 자동 할당, 해제: 호출시 자동으로 할당 되고, 종료시 자동으로 해제 된다.
- 빠른 접근: 메모리 접근 속도가 빠르다.
- 제한된 크기: 스택은 크기가 제한되어, 메모리를 너무 많이 쓰면 스택 오버플로우가 발생할 수 있다.
참고
https://iloveprogramming.tistory.com/146
[Dream hack] Background: Linux Memory Layout
강의 내용서론세그먼트코드 세그먼트데이터 세그먼트BSS 세그먼트스택 세그먼트힙 세그먼트서론메모리 오염(Memory Corruption)cpu의 동작과 메모리 사이에 밀접한 연관이 있음을 의미한다.만약 공
iloveprogramming.tistory.com
끝
반응형
'cs' 카테고리의 다른 글
| [개념 정리] 빅 엔디안(Big-Endian) && 리틀 엔디안(Little-Endian) (0) | 2025.03.02 |
|---|