안녕하세요.
올려주신 코드에서 int a,b,c 세개의 변수가 있는데 이 변수들은 분명히 어딘가에 위치를 잡고 있을 것입니다. 그곳이 어디일까요?
바로 스택영역입니다. 함수내에 선언되는 변수들이나 배열은 모두 스택 영역에 자리를 잡습니다. 글로벌로 선언된 변수들은 bss 라는 영역에 자리를 잡게 되지요. 스택에 자리잡고 있기 때문에 먼저 선언된 것이 큰 주소값을 가집니다. 스택에 있다고 해서 프로그램 실행시 push되지는 않고 컴파일시 스택에 들어간 상태로 컴파일되어 실행파일이 만들어집니다.
이재득 님이 쓰신 글 :
: 수고하십니다.
:
: int a,b,c;
: printf(" %p %p %p ",&a,&b,&c);
:
: 0012FF88 0012FF84 0012FF80
:
: 위와 같이 결과가 나오더군요.
: 제생각에는 먼저 선언한 a가 가장 작은 어드레스를 가져야 할꺼 같은데.
: 한 수 부탁드립니다.
:
:
:
|