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