구조 그림
1편에서 Data Segment까지 했었다 이번 편은 BSS, Heap, Stack을 다뤄 보려고 한다
Bss Segment
컴파일 시에 초기화 되지 않은 전역 변수들이 위치하는 곳이다. 프로그램이 실행되면 모든 값은 0으로 초기화된다
읽기, 쓰기 권한이 부여됨
Stack
Stack과 Heap은 상황에 맞게 확장해가는 Segment이다.Stack Segment는 Stack Frame이라는 단위로 사용는데, 이 Stack Frame은 함수 호출 시마다 생성되고 반환될 때 해제된다.
읽기, 쓰기 권한이 부여됨
Heap
C언어에서 malloc(), calloc()과 같은 함수를 통해 동적으로 할당받는 메모리가 위치하는 곳
읽기, 쓰기 권한 부여
정리
|
Code Segment |
Data |
Rodata |
Bss |
Stack |
Heap |
권한 |
읽기, 실행 |
쓰기, 읽기 |
읽기 |
읽기, 쓰기 |
읽기, 쓰기 |
읽기, 쓰기 |
참고 사이트
https://hackyboiz.github.io/2022/01/14/poosic/linux-memory-layout/