Where are uninitialized variables stored?
초기화 하지 않은 변수들은 어디에 저장될까?
초기화 하지 않은 변수들은 BSS 영역에 저장됩니다.
💡 BSS(Block Started by Symbol) 영역
data영역과 bss영역은 매우비슷한데, 일단 둘다 전역 변수(전역 배열, 전역 구조체 포함)등을 저장하는건 동일하다.
정적변수(Static) 역시 여기저장된다. (해석하면 Static 변수는 프로그램 시작과 동시에 만들어지긴 한다)
bss영역은 초기화 하기 전의 전역변수를 저장하고, data영역은 초기화 한 전역변수를 저장한다. (값 저장 유무)
전역변수들은 main이 실행되기전 저장되며, bss영역에 있던 전역변수는 main이 실행되기전, 전부 0으로 초기화되어 data영역으로 들어가버린다. (우리의 전역배열, 전역변수가 0으로 초기화되던 이유)
이럴거면 bss가 왜 필요하냐고 할 수 있는데, 여러프로그램을 다루는 경우, 초기화 안된거는 main실행전 메모리를 아끼는게 중요할때가 있다.
이부분은 읽기 쓰기 모두 허용된다. (전역변수 값은 바꿔야 할거 아닌가)
Last updated