• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

C++ 에서는 메인 함수 밖에서 쓰면 0과 공백으로 초기화되나요?

22.06.25 23:00 작성 조회수 258

0

int t, n;

string a, b;

int main(){

   int m;

 ...

}

 

컴파일 후 실행해보니, 메인 함수 안에서는 쓰레기 값이 들어가고 메인 함수밖에서는 항상 0이나 공백으로 초기화되어있는 것 같아서요. 혹시 왜 그런건지 알 수 있나요?

 

감사합니다.

답변 2

·

답변을 작성해보세요.

0

안녕하세요 . ryu님 해당부분은 교안에 다음과 같이 설명 되어있습니다.

정적할당

정적할당의 경우 BSS segment와 Data segment, Code segment로 나눠집니다. 

 

BSS segment는 초기화가 되지않은 전역변수, static으로 선언한 변수들, 0으로 초기화가 되는 것들을 뜻하고 Data segment은 초기화가 8, 1..로 할당된 변수를 뜻합니다. 이렇게 나눠지는 이유는 프로그램이 컴파일되고 Object코드가 되고 링킹이 되어 프로그램이 되서 실행될 때 Object코드의 효율성을 위해서이지요. 어차피 0으로 초기화를 하기 때문에 사이즈만을 ObjectCode에 넣으면 되는 것이고 그러기 위해서 나눕니다. 참고로 const ... 로 선언한 변수는 Data segment에 저장되게 됩니다. 

 

감사합니다.

강사 큰돌 올림.

0

서범석님의 프로필

서범석

2022.06.26

https://hydroponicglass.tistory.com/182

이 블로그에 내용이 잘 정리되어있습니다!