당니의 개발자 스토리
[필수개념] 메모리와 포인터(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 에 어떠한 값을 할당한다고 하더라도 주소가 달라지지 않는다.
집이 있고 세입자가 바껴도 집 주소는 변함없는 것을 생각하면 된다.

변하는 건 세입자, 즉 값이지 주소가 변하진 않는다.
'10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트 > 0주차 : 강의소개와 C++의 기본' 카테고리의 다른 글
| 구현문제를 잘 푸는 방법 (0) | 2024.02.28 |
|---|---|
| [필수개념] 메모리와 포인터(pointer) #4 array to pointer decay (0) | 2024.02.06 |
| [필수개념] 메모리와 포인터(pointer) #3 역참조연산자 (0) | 2024.02.06 |
| [필수개념] 메모리와 포인터(pointer) #2 포인터 (0) | 2024.02.06 |
| [필수개념] split() 함수 (0) | 2024.02.03 |