해결된 질문
작성
·
19
·
수정됨
0
우선 좋은 강의를 제공해주시는 널널한 개발자님에게 감사를 드립니다.
일단 첫번째 질문은
2분 30초 쯤에 말하신 1바이트의 공간을 관리한다 즉 번호표를 매긴다라는 의미에 대한 질문입니다.
제가 아는 배경지식으로 이해한 방법은
주소가 0x0000000000000000부터
0xFFFFFFFFFFFFFFFF
까지 범위가 있는데 이를 운영체제가
1바이트인 공간에 이걸 찾기 위해서
1바이트인 공간을 (ex 0x00000ab2332f0001
라는 주소를 붙여준다(은행 번호표처럼 사람에게 식별하기위해 번호표를 준다?)라고 이해하는게 맞나요?
2번째 질문은 직접 지정에 대한 내용입니다.
8분쯤 상황을 이해한걸 제가 설명해보겠습니다.
직접지정은 제가 지역변수에 int ndata를 선언했다고 가정하면 OS가 ndata의 주소를 할당해주는데
그 때 ndata에 지정된 주소를 직접지정된 주소라고 하는건가요?
아님 OS가 할당후에 할당한 주소로 찾아가 우리가 그 주소를 상수로 고정 시키겠다라고 하는게 직접할당인가요?
강사님이 말하시는게 2가지 의미로 해석이 되서 약간 헷갈립니다.
3번째 질문인 간접지정에 대한 내용입니다.
위에 가정을 끌고와서 int ndata라는 변수를 선언한 주소를 저장하기 위해 int *p = &ndata라고 선언을 하면 변수 p라는 공간이 생겨 나고 그 변수 p의 공간에 ndata의 주소를 담아 저장한다. 그런데 p는 ndata가 아니라 다른 사용자가 선언할 데이터의 주소를 담을 수 있기에 변수이고 이를 간접지정이라고 한다 맞나요?
답변 2
0
네. 그렇게 이해하시면 되겠습니다.
네. 맞습니다. 실제 주소가 어떤 값이 될지는 프로그램을 실행시켜야 알 수 있습니다. 그런 이유때문에 이름이 'nData인 메모리'의 주소가 아직 알 수 없어 간점지정과 헷갈릴 수 있습니다. 아무튼 지역변수(및 자동변수)를 선언 및 정의 할 경우 Stack 메모리가 사용사용되는 것은 확실하며 구체적인 주소를 알 수는 없더라도 이름이 nData인 것은 확정된 것입니다. 그러므로 본인이 설명한 내용 중 전자가 맞습니다. 메모리가 구체적으로 할당되고 결정되는 일은 런타임이 일어날 일입니다. 할당과는 별개로 분리해 생각하기 바랍니다.
'다른 사용자'까지는 아니더라도 int 포인터 자체가 변수이며 얼마든지 다른 값으로 덮어 써질 수 있습니다. 따라서 포인터 변수의 값에 따라 포인터가 가리키는 대상 int는 바뀔 수 있습니다.
직접지정과 간점지정은 개념적인 관점에서 이해하는 것이 좋습니다. 예를 들어 내가 결혼할 사람을 내가 정하면 직접지정이고 엄마(포인터)가 정해준다면 내 배우자는 엄마라는 존재를 통해 결정되는 (배우자) 간접지정 방식이 되는 것입니다. 참고하시기 바랍니다. 😄
0
안녕하세요, 인프런 AI 인턴입니다.
나성훈님의 질문에 대해 답변드리겠습니다. 64비트 시스템에서 메모리 관리 방식을 이해하는 데 있어 혼란이 있을 수 있습니다. 운영체제는 메모리 공간을 관리하기 위해 각 메모리의 작은 부분인 1바이트에 고유한 주소를 부여합니다.
64비트 시스템에서는 주소를 표현하기 위해 최대 64비트의 길이를 사용하는데, 이는 주소 체계가 64비트임을 의미합니다. 이는 1바이트의 메모리 공간에 대해 64비트 주소를 갖게 하여, 이론적으로 최대 (2^{64})개의 주소를 가질 수 있다는 것을 말합니다. 실제로 운영체제가 메모리를 관리할 때는 각 1바이트 크기의 메모리 셀에 이러한 64비트 주소를 할당합니다.
따라서 메모리 공간에 64비트 주소를 붙이는 것은, 각 바이트 단위의 메모리에 고유하게 식별할 수 있는 번호를 주어 데이터 접근과 관리에 용이하게 하는 방법이라고 생각하시면 됩니다. 이러한 주소 표현은 마치 우리가 특정 사무실의 책상마다 고유한 번호를 부여하여 그 위치를 쉽게 찾을 수 있도록 하는 것과 유사합니다.
비슷한 맥락에서 이 주제에 대한 다른 학습자의 질문과 답변이 존재합니다. 아래 링크들을 참고하시면 더 많은 정보를 얻으실 수 있습니다:
이 답변이 나성훈님의 이해를 돕기를 바라며, 추가적인 궁금증이 있으시면 언제든지 질문해 주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.