당니의 개발자 스토리

[필수개념] 메모리와 포인터(pointer) #1 메모리와 주소 본문

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트/0주차 : 강의소개와 C++의 기본

[필수개념] 메모리와 포인터(pointer) #1 메모리와 주소

clainy 2024. 2. 6. 09:40

메모리와 포인터(pointer) #1 메모리와 주소

 

큰돌t 컴퓨터는 128GB RAM을 가졌다. 이 컴퓨터의 메모리는 어떻게 구현이 되어있냐면,

1바이트짜리메모리 셀들로 이루어져있다.

그리고 이 메모리 셀 각각고유한 주소를 갖는데, 16진수로 이루어진 주소를 가진다.

여기서 내가 프로그램을 작성한다 라고 치자. 4바이트인 int형 변수를 선언한다고 하자.

int i; 라고 했을 때, int선언만 했는데도 불구하고, 이 변수를 저장할 메모리 공간이 필요하다.

그래서 선언을 하면, "야야 128GB 중에서 int i 가 쓸만한 공간을 예약 좀 해" 라고 해서 메모리 셀 4개짜리 공간을 차지, 즉 예약하게 된다.

그리고 나서, int i 에다가 어떠한 값을 할당하면,

이러한 메모리 셀에다가 값들이 차곡차곡 쌓여지는 거다.

예를 들어서, 큰돌 이라는 이름을 적으려면 면 칸이 필요할까? 두 칸이 필요하다. 이런 식으로 생각하면 된다.

그리고 이 변수(i)의 주소는 뭘까? 메모리 셀 각각은 고유한 주소를 가지고 있다.

int i가 이 4개의 공간을 쓰는 거 까지는 맞는데, 이 i의 주소는 어떻게 될까?

변수의 주소는 사용하는 메모리 영역의 첫 번째 주소를 가리킨다.

실습은 C++로 하면 된다.

 

메모리 주소는 os, 실행시간 등등에 따라서 달라진다. 그래서 Run 할 때마다, i 에 어떠한 값을 할당한다고 하더라도 주소가 달라지지 않는다.

집이 있고 세입자가 바껴도 집 주소는 변함없는 것을 생각하면 된다.

변하는 건 세입자, 즉 이지 주소가 변하진 않는다.