에서 I이 적은 프로그램이 adresses. 왜 이런 식으로? 아니면 내가 잘못하고있는거야?로컬 변수 C
로컬 변수 C
답변
로컬 변수의 저장 공간이 스택에 있습니다. X86 프로세서 제품군에는 "아래쪽으로 커지는"스택이 있습니다. 이것은 할당이 발생할 때 (예를 들어 변수 할당) 스택 포인터가 하위 메모리 주소로 아래쪽으로 이동한다는 것을 의미합니다.
&a
은 &a
이 할당 된 후 스택 포인터가 다음 할당을 위해 더 낮은 주소로 이동 되었기 때문에 &b
보다 큽니다.
"& a가 할당 된 후 스택 포인터가 다음 할당을 위해 더 낮은 주소로 아래로 이동했습니다." - 당신은이 방법으로 생각할 수 있지만 컴파일러가 실제로 한 것은 아닙니다. 아마도 함수 엔트리에서 스택 포인터를 한 번 움직이게하는 코드를 방출했을 것입니다. –
점 찍은, 내 대답은 실제 컴파일러에 의해 취해질 가능성이있는 작업을 나타내지 않습니다. 저레벨 기능 구현에 대해 처음 배우기 시작했을 때, 이런 식으로이 개념을 이해하는 것이 더 쉬워졌고, 무엇이 최적화되고 있는지 파악하기가 더 쉬웠습니다. – Crippledsmurf
스택이 커질 수 있습니다.
a
및 b
은 정의 순서대로 스택에 할당됩니다. 따라서 &a
은 &b
보다 높습니다.
- 1. C++ 로컬 변수 구문
- 2. 로컬 변수 C
- 3. C 로컬 변수 재사용
- 4. C++ 미래 호 로컬 변수
- 5. C++에서 로컬 변수 덤프
- 6. C#의 로컬 변수 문제
- 7. 공유 및 로컬 변수 C++
- 8. 로컬 변수
- 9. 로컬 변수/클래스 변수 증분
- 10. C++ 로컬 변수/객체를 추적하는 방법
- 11. 배열 대 C 언어의 로컬 변수
- 12. C# 오류 : 할당되지 않은 로컬 변수 사용
- 13. VS 2010 C++ 로컬 변수 디버깅
- 14. C 실행 스택 - 로컬 변수 할당
- 15. C++ 로컬 변수 및 스레드 (thread_local 아님)
- 16. C++ 다중 스레드 안전 로컬 변수?
- 17. 할당되지 않은 로컬 변수 사용? C#
- 18. 자바에서 로컬 변수 성능 대 C#
- 19. C++에서 로컬 환경 변수 설정
- 20. C# 배열에서 할당되지 않은 로컬 변수 사용
- 21. C++ 스레드에 대한 참조로 로컬 변수 전달
- 22. JTextbox에 로컬 변수 전달하기
- 23. pthread_key_t 대 로컬 변수
- 24. 스레드 로컬 저장소 및 로컬 메서드 변수
- 25. 로컬 변수 대 매개 변수
- 26. 클래스 변수 대 로컬 변수
- 27. 공개 변수, Java의 로컬 변수
- 28. 하스켈 루프와 로컬 변수
- 29. emacs 디렉토리 - 로컬 변수 문제
- 30. 코드가 초기화되지 않은 로컬 변수
왜 중요한가요? – John3136
아마도이 질문의 요지는 보이지 않지만 스택이 아래쪽으로 커지기 때문일 수 있습니다. – Pubby
나는 그것이 당신의 컴파일러 (또는 ur OS)가 메모리를 할당하는 방법과 관련이 있다고 생각한다. 일부 스택은 더 높은 기본 주소를 가지며 스택을 위로 이동할수록 감소합니다. 반면에 일부 스택은 더 낮은 스택부터 시작하여 더 높은 스택으로 이동합니다. 걱정할 필요가 없으며 오류도 아닙니다. –