변수의 주소가 컴파일할때마다 바뀌는 이유가 뭔가요?
#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 언어 고수님들 해답 부탁드려요~
----------------------------------------------------------------------------------
컴파일을 할때 마다 바뀌는 것이 아니고, 실행할 때 마다 바뀝니다.
실행파일은 어디에 있어도 실행이 되도록 상대적인 주소를 사용합니다.
종로에 있으면 종로에서 실행이 되고, 강남에 있으면 강남에서 실행이 됩니다.
어디에 놓여지느냐?(적재되느냐?)는 실행되는 시점에 정해지게 됩니다.
따라서 실행할 때 마다 주소값이 달라질 수 있습니다.
(한번 컴파일한 후 그 실행파일을 계속해서 실행을 해도 주소값이 계속바뀌게 됩니다.)
'c·c++ > c 프로그래밍' 카테고리의 다른 글
중복을 피하여 난수를 선택하는 방법1,2 (0) | 2014.03.10 |
---|---|
c언어 다음에 무슨공부를 할까요? (0) | 2014.03.05 |
분할수 (0) | 2014.02.26 |
windows구조와 원리 - OS를 관통하는 프로그래밍의 원리 (0) | 2014.02.26 |
vc++ 2010 LNK1123: coff 변환오류 (0) | 2014.02.26 |