일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 수학용어정리
- ipc(inter process communication)
- 월드아웃라이너
- directx
- livrary
- c++
- uaiperception
- 각도변환
- 25.06.11dir
- 자료구조정리
- 언리얼엔진
- 프로그래밍일기
- 언리얼엔진5
- 프로그래밍
- leveleditor
- 언리얼비헤이어비어트리
- unrealengineai
- bttask
- 게임엔진튜토리얼
- 게임개발
- 언리얼엔진공부
- 영단어정리
- c++용어정리
- c++porinter
- DX
- c++class
- 언리얼ai
- 자료구조
- 자료형타입
- c언어정리
- Today
- Total
루리코딩 세상
메모리 영역 : Windows 기준 본문
Windows 기준 프로그램 실행 시 메모리 할당 영역은 아래와 같은 순서로 구성된다.
메모리 주소 기준으로 낮은 곳에서 높은 곳으로 정렬되며, 대체로 다음과 같이 배치되는 특성을 갖음.
[낮은 주소] ↓
─────────────────────────────
1. **코드 영역 (Text Segment)**
- 실행 코드(함수, 기계어 등)가 저장
- 컴파일된 바이너리의 `.text` 섹션
- 읽기 전용
2. **데이터 영역 (Data Segment)**
- 초기화된 전역변수/정적변수 (`int g = 3;`)
- 읽기/쓰기 가능
3. **BSS 영역 (Block Started by Symbol)**
- 초기화되지 않은 전역변수/정적변수 (`int g;`)
- 런타임에 0으로 초기화됨
4. **힙 (Heap)**
- `new`, `malloc()` 등으로 동적 할당
- 크기가 유동적, 수동 해제 필요 (`delete`, `free`)
- 높은 주소 방향으로 증가
5. **스택 (Stack)**
- 함수 호출 시 지역변수, 리턴주소, 매개변수 저장
- 함수 호출마다 Push/Pop
- 힙과 반대 방향인 **낮은 주소**로 성장
─────────────────────────────
[높은 주소] ↑
┌───────────────┐
│ Stack │ ← 함수 호출 시마다 위쪽으로 내려감
├───────────────┤
│ Heap │ ← new, malloc 등으로 위쪽으로 자람
├───────────────┤
│ BSS Segment │ ← 초기화 안된 전역/static 변수
├───────────────┤
│ Data Segment │ ← 초기화된 전역/static 변수
├───────────────┤
│ Code Segment │ ← 함수, 명령어 등
└───────────────┘
'이론 > C++' 카테고리의 다른 글
스택 프레임 (Stack frame) (0) | 2025.05.14 |
---|---|
Factory (0) | 2025.05.14 |
C++ 동적배열, 정적배열 (0) | 2025.05.12 |
C++ 스택 오버 플로우 (Stack Overflow) (0) | 2025.05.12 |
C++ 콘텐츠 : 포인터 (0) | 2025.05.12 |