c·c++/c 프로그래밍

변수의 주소가 컴파일할때마다 바뀌는 이유가 뭔가요?

바로이순간 2014. 3. 5. 11:33

변수의 주소가 컴파일할때마다 바뀌는 이유가 뭔가요?

 

#include <stdio.h>

int main(void){

  int a = 10;

  char b = 7;

  double c = 3.775;

  printf("a의 주소 = %x \n", &a);

  printf("b의 주소 = %x \n", &b);

  printf("c의 주소 = %x \n", &c);

  return 0;

}

 

변수 선언시 메모리에 저장되어 그 주소값을 참조할 수 있는데

컴파일 할때마다 주소값을 확인해보면 주소가 자꾸 바뀌는건 왜그럴까요?

 

c 언어 고수님들 해답 부탁드려요~

----------------------------------------------------------------------------------

컴파일을 할때 마다 바뀌는 것이 아니고, 실행할 때 마다 바뀝니다.

실행파일은 어디에 있어도 실행이 되도록 상대적인 주소를 사용합니다.


종로에 있으면 종로에서 실행이 되고, 강남에 있으면 강남에서 실행이 됩니다.

어디에 놓여지느냐?(적재되느냐?)는 실행되는 시점에 정해지게 됩니다.


따라서 실행할 때 마다 주소값이 달라질 수 있습니다.

(한번 컴파일한 후 그 실행파일을 계속해서 실행을 해도 주소값이 계속바뀌게 됩니다.)