inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

홍정모의 따라하며 배우는 C++

6.9 포인터 연산과 배열 인덱싱

배열의 크기가 큰 경우에 관해 질문드립니다.

해결된 질문

360

Heisia

작성한 질문수 4

4

일반적인 상황에서는 메모리 주소가 해당 자료형에 맞게 순차적으로 할당된다고 말씀해 주셨고 실제로 메모리 주소도 보면서 이해하였습니다.

그런데 앞 강의에서 배열이 굉장히 큰 경우 등은 모든 메모리 주소가 연결 되어있지 않을 수도 있다고 해주셨던거 같은데 이 경우에 해당 배열에 포인터 연산을 사용한다면 문제가 발생하지는 않을지 궁금해 질문드립니다.

C++

답변 4

6

Hello Yeo

다른 강의(컴퓨터 구조)를 듣다가 알게 된 사실인데
각 프로그램을 실행했을 때 이를 process라 부르고, 이들 process들은 서로 독립적인 virtual memory를 사용한다는군요.
이는 physical memory(실제 DRAM 상의 메모리)와는 다른 개념으로 (저는 처음에 physical memory를 상상했었습니다.)
프로그래머 입장에서는 아주 큰 메모리를 갖는다고 느끼게 해주는 것입니다.

그 내부에는 physical memory 와 virtual memory 사이에서 두 memory address를(각각은 서로 다른 memory address를 가집니다.) translation을 해주는 page table 이 존재하는데, 이 table이 virtual memory 와 physical memory 사이의 관계를 형성해주고 각 process 내에서는 서로 독립적인 virtual memory 공간을 만들어서 아무리 길게 연결해도 연속된 것처럼 나타나고, 질문주셨던 현상을 프로그래머 입장에서는 쉽게 볼 수 없는 것입니다.

2

Heisia

위의 답변 주신 내용과 원래 질문의 내용이 전부 이해되었습니다.

의외의 소득을 얻은 느낌으로 하루게 좋게 마무리 되네요. 감사합니다.

2

Heisia

감사합니다.

저도 비슷한 방법으로 시도해 보았는데 별다른 문제는 발생하지 않네요.

현재 상황보다는 나중에 천문학적인 크기의 데이터를 다루는 경우가 생기면 그 때 다시 생각할 문제인것 같습니다.

좋은 참고가 되었습니다.

2

Hello Yeo


i th 주소와 i-1 th 주소를 비교하여 4가 차이나지 않으면 메시지를 출력하고 종료하는 프로그램입니다.

관련 자료를 찾아보려 했으나 찾지는 못했고 20억개(8GB)까지 해보니 아직까지는 그런 문제가 발생하진 않네요.
하지만 만약 그런 일이 발생한다면 OS와 compiler를 만드시는 분들이 잘 작동하도록 하셨을 것이라 생각합니다.
어쩌면 지금의 경우도 문제는 발생하고 있는데 제가 모르게 겉으로는 나타나지 않게 해주는 것일 수도 있죠.
확답을 못드리겠네요. 도움은 됐으면 좋겠습니다.

변수가 메모리에 저장되는 것을 알려주는 강의가 어떤강의였죠

1

465

1

메모리 주소 10진수로 출력

1

653

1

클래스 템플릿 특수화에서 boolalpha로 표현된 리턴값에 대해 질문이 있습니다.

1

498

1

여러가지 리턴 타입에 관한 강의가 어떤 걸까요?

1

534

1

메모리 주소에 관한 질분

0

679

1

인터페이스 클래스에서 reportError의 매개변수에 대해 궁금한 것이 있습니다.

0

549

1

형변환 오버로딩에서 const 관련 질문이 있습니다.

0

443

1

Digit 뒤에 reference를 사용하는 이유

0

510

1

4.2 전역 변수, 정적 변수, 내부 연결, 외부 연결

0

323

1

dat파일이...

0

539

1

TODO:대입 연산자 오버로딩에 대한 소스코드입니다.

0

644

1

복사 생성자 관련 질문이 있습니다.

0

454

1

수업 중 궁금한점이 있습니다.

1

389

1

라이브러리자체가 이해가 되지 않습니다.

0

561

1

마지막 예제 질문

0

302

1

증감연산자 위치에 따른 수행 순서 질문입니다.

0

375

1

단항 연산자 오버로딩에서 return 부분에 질문이 있습니다.

1

410

1

friend함수 관련 질문이 있습니다.

0

311

1

operator+ 정의부분에서 궁금한 것이 있습니다.

0

447

1

3분 17초 질문

0

350

1

함수에 값을 대입한다는 개념이 이해가 되지 않습니다.

0

447

1

int getvalue() const에서 const는 왜 뒤에 붙는건가요?

0

443

2

const Something &st에서 const를 빼면 안되나요?

0

300

1

friend함수는 다른 클래스의 멤버함수로 쓸 수 없나요??

1

492

1