inflearn logo
강의

講義

知識共有

C++とUnrealで作るMMORPGゲーム開発シリーズ Part1: C++プログラミング入門

変数とレジスタ

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

455

chldpfflxm4218

投稿した質問数 8

0

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

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

1바이트를 더했는데 왜

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

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

 

 

c++

回答 2

2

Rookiss

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

0

tksrhf4028625

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

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

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

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

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

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

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

소스코드와 관련하여 질문드립니다

0

66

1

map 컨테이너의 emplace 함수에 대해

0

109

2

시작이 안되네요...!

0

95

2

EAX 명령어 실행 시 RAX의 상위 32비트가 초기화 되는 이유

0

125

1

리틀 엔디안 장점 질문합니다.

0

130

1

메모리 창에 주소를 넣었는데 영어 꺠짐

0

124

1

타입변환#2 build시 knight 인접 stack이 침범당했다는 error가 발생합니다.

0

94

2

map #1 8분 58초 맵은 레드블랙트리로 이루어진 것 같습니다.

1

138

2

hello world 부터 오류 ㅠㅜ

0

186

1

지역변수가 스택? 레지스터

0

127

2

마지막 문제 질문드립니다.

0

162

2

메모리창이 비활성화됩니다.

0

98

1

이중포인터 강좌 부분 질문있습니다.

0

145

1

2를 더하는 이유

0

133

1

메모리 주소 창 엔디안 질문 드립니다. 인프런 봇 답변도 괜찮습니다

1

109

1

해당 코드는 왜 오류가 날까요?

0

154

1

마지막 문제 질문 있습니다.

0

116

1

강의 마지막부분에 질문이 있습니다.

0

190

2

Field초기화

0

140

1

virtual과 override 차이

0

314

2

3:30 참조자 리턴

0

166

1

map 찾기

0

157

1

프로그램 질문드려요

0

258

1

캐스팅 질문

0

136

1