이상해요!!
조심해
2023.04.01
갑자기 생각이낫는데요
int a;
이렇게 하면 메모리에 4바이트가 할당 되자나요//
그래서 a를 호출하면 이 4바이트가 호출되자나요.
근데 그럼 이 a 라는 변수 이름은 어디에 저장이 되어있나요//
같은 맥락에서
int a[5];
이렇게 선언을 하면,
배열의 이름은 포인터라고 배웠는데
포인터 a는 a[0]을 가르키고잇는 상수 포인터 자나요
그렇게도면 결국 a란 것은 int * a 랑 똑같은거자나요
그럼 여기서 사용되는 4바이트는 어딨는거죠?
-
인1형녀
프로그램에서 변수\이름\은 따로 보관되지 않습니다.
함수가 호출되면 로컬변수들을 스택에 만드는데 이때 만든 변수의 주소를 변수명 대신으로 씁니다.
컴파일러는 변수의 타입에 따라서 적절하게 메모리를 접근하도록 프로그램을 만듭니다.
char타입이면 1바이트만, short타입이면 2바이트만, 이런 식으로 말이죠. -
연와인
C에서 변수, 배열 등등.. 이 저장되는 곳은 \스택\ 이라는 메모리 공간 입니다.
나중에 malloc를 배우시게 되면 아시게 되겟지만, 메모리가 저장되는 곳(?)은 크게 2가지가 있습니다.
하나는 \스택(stack)\이라는 공간이고, 다른 하나는 \힙(heap)\이라는 공간 입니다.
스택은 위에서 말씀 드렸듯이 변수, 배열, 사용자 정의함수 등등.. 이 저장되는 공간이구요
힙은 사용자가 malloc, new 등을 사용하여 직접 메모리를 할당하였을때