메모리 영역과 전역 / 지역 변수

이영구·2022년 12월 20일
0

Algorithm

목록 보기
16/19

메모리 영역은 다음과 같이 구분 되어 있고,

< 하위 주소 -------------------------------------------------------------> 상위 주소 >
< ---------------------정적 할당 영역-------------------- > < ----동적 할당 영역---- >
<Text 영역, Data 영역, BSS 영역(Blocked Stated Symbol)> <Heap 영역, Stack 영역>

Text 영역 : 프로그램 명령이 위치하는 곳으로 기계어로 제어되는 메모리 영역
Data 영역 : 전역/정적변수, 배열, 구조체 등이 위치하는 곳으로 초기화된 데이터는 data영역,
초기화 되지 않은 데이터는 BSS영역에 저장
Heap 영역 : 동적 메모리 할당을 위한 영역 (malloc(), new() 사용)
Stack 영역 : 지역/매개변수, 리턴 값 등이 잠시 사용되었다가 사라지는 데이터를 저장하는 영역

  • data 영역과 bss 영역을 구분하는 이유는?
    : 초기화 되지 않은 변수는 프로그램이 실행될 때 영역만 잡아주면 되고, 그 값을 프로그램에 저장하고 있을 필요는 없으나 초기화가 되는 변수는 그 값도 프로그램에 저장하고 있어야 하기 때문.
    따라서 bss 영역 변수들이 많아져도 프로그램의 실행 코드 사이즈를 늘리지 않음.

설명이 잘 되어 있는 링크 참고~
https://mer1.tistory.com/33

profile
In to the code!

0개의 댓글