C 프로그래밍 영역에서 참조 변수는 항상 메모리 사용량에 대한 의문을 제기해 왔습니다. 참조의 내부 작동 방식을 조사하고 메모리에서의 참조 존재를 둘러싼 미스터리를 밝혀내겠습니다.
코드 조각을 고려해보세요.
int i = 42; int& j = i; int k = 44;
변수의 주소를 조사하여 i, j, k는 각각 4바이트의 메모리를 차지합니다. 그러나 참조 j를 관찰하면 뭔가 이상한 현상이 발생합니다. k는 여전히 4바이트를 소비하는 반면 메모리 공간은 없는 것으로 보입니다.
여기서 무슨 일이 일어나고 있나요? 런타임 중에 참조가 허공으로 사라지는 것 같습니다. 이 현상을 이해하려면 참조가 어떻게 작동하는지 파악해야 합니다. 포인터와 달리 참조는 메모리 주소를 저장하는 변수가 아닙니다. 대신, 다른 변수에 대한 직접적인 별칭입니다. 이는 참조의 메모리 주소가 참조하는 변수의 주소와 동일하다는 것을 의미합니다.
기본적으로 참조가 발견될 때마다 컴파일러는 이를 기본 변수의 주소로 바꿉니다. 이 해결 방법은 컴파일 프로세스 중에 발생하므로 포인터와 같은 런타임 역참조가 필요하지 않습니다. 이는 j가 메모리 공간을 차지하지 않는 것처럼 보이는 이유를 설명합니다.
이제 함수 인수로 수신된 참조를 고려해 보겠습니다. 이러한 경우 참조는 실제로 함수 자체의 스택에 자체 공간을 가지고 있습니다. 함수에는 참조된 변수의 주소를 저장할 장소가 필요하기 때문입니다.
마지막으로 C 표준에서는 참조 배열 생성을 명시적으로 금지합니다. 이러한 제한은 참조가 본질적으로 다른 변수에 대한 별칭이므로 참조 배열이 독립적으로 존재할 수 없다는 사실에서 비롯됩니다. 대신 참조된 유형의 배열을 사용해야 합니다.
위 내용은 C 참조에는 자체 메모리 공간이 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!