이것은 이론적 인 질문입니다. 내 예제는 C를 사용하지만 언어는 그다지 중요하지 않습니다.과도한 스택 사용
의 내가
int x0 = 0;
int x1 = 1;
.
.
.
int x100 = 100;
가 지금은 X0를 호출 할 스택에 많은 변수를 많이 만들 수 있다고 가정 해 봅시다. 스택은 LIFO이므로, x0을 가져 오는 동안 x100, ..., x1이 일시적으로 저장되는 위치는 어디입니까? 이 말은 그들이 레지스터에 배치 될 필요가없는 것입니까? 그렇다면 레지스터가 충분하지 않습니다. 카페테리아 쟁반의 표준 유추를 사용하여, 내가 바닥 트레이에 가려고한다면, 다른 쟁반을 잡는 데 많은 사람들이 필요합니다. 스택이 세 개가 아니라면, 제가 할 수있는 "하노이 타워 "솔루션 ...
분명히이 질문은 스택에 대한 나의 무지와 어떻게 작동 하는지를 보여줍니다. 미리 감사드립니다.
글쎄, C 프로그램의 스택은 성장하고 줄어들지 만 액세스하지 않을 때 스택처럼 동작합니다. 스택에 "깊은"관계없이 모든 요소에 직접 액세스 할 수 있습니다. 나는 당신이 어셈블리를 보길 권한다. –
참고 : C에서는 로컬 변수를 만들었 기 때문에 로컬 변수가 스택에 있다는 것을 의미하지는 않습니다. 그것은 레지스터에 갈 수도 있고, 스택으로 갈 수도 있고, 움직일 수도 있고, 아무데도 갈 수 없다 (제거 될 수도 있음). 코드에 대한 어셈블리를 보면 모든 변수가 제거 될 것으로 생각됩니다. –
@ Cicada. 알겠지만 스택은 LIFO에 의해 성장하지만 액세스는 직접적입니다. 말이된다. –