강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

루키스팬님의 프로필 이미지
루키스팬

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

변수와 레지스터

메모리 주소값 더하는게 이해가 안되요 ㅠㅠ

작성

·

421

0

주소값이라는 개념은 이해가 됬는데요

강의 변수와 레지스터 15분쯤 보면

1바이트를 더했는데 왜

0x403010에서 0x403011로 된건지 잘모르겠네요..

저기 뒤에 숫자 1은 바이트가 아니라 1을 더한거아닌가요?

 

 

답변 2

2

Rookiss님의 프로필 이미지
Rookiss
지식공유자

네 주소값도 정수이고, 이 정수에다가 '1'을 더했다고 이해하시면 됩니다.
(바이트가 어느 시점에서 나왔는지는 모르겠지만, 무시하시면 됩니다)

0

옛날에 학부 때 그 부분이 저도 좀 헷갈렸는데요

요약하자면 논리적인 주소의 값은 1증가 한 게 맞으나 실제 물리적인 메모리의 공간은 1바이트가 증가한 거여서 1바이트를 더했다고 표현하는 겁니다

좀 더 구체적으로는
일단 대부분의 컴퓨터 시스템이
"바이트 주소 지정" 방식을 사용합니다

쉽게 말해서 컴퓨터 메모리에 있는 모든 1바이트 공간마다 고유한 주소 번호를 하나씩 붙여 놓는 건데요

메모리를 아주 긴 아파트 복도라고 상상했을 때
각각의 방(메모리 공간)은 1바이트 크기를 가집니당
그리고 각 방마다 0x01, 0x02, 0x03...
같은 식으로 주소 번호가 붙어 있고요

따라서 주소 값이 1증가 했다는 것은
바로 옆방으로 한 칸 이동했다는 뜻이고,
이는 메모리 상에서 물리적인 공간을 1바이트 만큼 이동했다는 뜻 입니다

+
본 주제와는 무관하지만 같이 알아두면 좋은 개념이어서 추가로 적자면
논리적인 메모리 주소를 담는 공간은
64비트 시스템 기준에서는 8바이트 입니다
이것은 나중에 "포인터의 크기" 개념에서 다루는 내용입니다

루키스팬님의 프로필 이미지
루키스팬

작성한 질문수

질문하기