2010-08-01 3 views
0

이 내용을 알고 싶습니다.동적 변수는 메모리의 주소에 어떻게 바인딩됩니까?

시스템에서 배열에 메모리를 할당한다고 가정 해 봅시다. MyArray. 이 MyArray 변수를 어디에서 사용할 지 컴퓨터가 어떻게 알 수 있습니까? 이 명명 된 변수는 어떻게 낮은 수준에서 관리됩니까?

요약하면 메모리에 정의 된 변수와 실제 주소 사이의 관계를 알고 싶습니다.

나는 이것이 더 귀찮은 설명이므로 이해할 수 있기를 바랍니다. 나는 더 좋은 단어를 찾을 수 없습니다.

답변

0

즉, 정의 된 변수와 실제 메모리 사이의 관계 사이의 관계를 알고 싶습니다.

변수는 가상 주소입니다.

가상 주소와 실제 주소 간의 매핑은 운영 체제의 가상 메모리 하위 시스템에서 수행됩니다. 일반적으로 변수의 실제 주소를 아는 것은 흥미롭지 않습니다.

+0

그래서 변수를 선언하면 프로그램이 일종의 "포인터"를 만듭니다. 나중에 프로그램에서 그 변수를 참조하면 실제 변수를 가리키는 "포인터"로 변수 데이터에 액세스합니다. 그런 식으로? – Jarek

+0

선언 한 변수는 선택한 변수 유형에 대한 포인터입니다. 변수에 공간을 할당하려면 운영 체제에 할당 할 공간을 요청하면 할당 된 메모리의 시작 위치에 대한 포인터가 생깁니다. 비교를 위해 정적 변수는 프로그램을 시작할 때 이미 할당되고 포인터는 코드에 하드 코딩됩니다. –

+0

이것은 프로그래머가 C를 알기에 유용한 이유입니다. C에서는이 모든 것이 분명히 투명합니다. 이후에 더 높은 언어가 동일한 것을 할 수있는 방법을 외삽하는 것은 항상 사소한 일입니다. – Arelius

0

내가 원하는 것은 런타임 시스템이 어떻게 수행되는지입니다. dynamic memory allocation. 그러나 프로그래밍 언어/런타임에 따라 stack에도 메모리를 할당 할 수 있습니다.

similar question도 있습니다.

0

변수는 메모리 주소를 저장하므로 프로그램이 myVar의 값을 요청할 때 실제로 메모리 주소를 얻습니다.

웹 사이트를 검색 할 때와 조금 다릅니다. 당신은 내게 www.google.com을 표시하도록 요구하지만 실제로 정보를 얻는 데 사용되는 Google의 IP입니다.

+0

그 주소는 다른 메모리 할당 방법 인 스택에 저장됩니다. 해당 주소에 대한 참조는 스택 상단 주소에서 해당 변수에 해당하는 상수 값을 계산합니다. – Basilevs

관련 문제