이제부터 스택 영역에 새로운 데이터가 추가되고 사용되는 모습의 예를 살펴보겠습니다.
다음의 이 빈 통을 스택 영역이라고 생각합시다.
스택에 새로운 데이터를 추가하는 것을 PUSH라고 합니다.
PUSH를 하면 기존 데이터 위에 새 데이터가 순서대로 쌓아집니다.
스택에 있던 데이터를 다시 빼내는 것을 POP라고 합니다.
이처럼 스택은 기본적으로 PUSH와 POP을 통해 데이터의 추가/제거가 가능하며 이 PUSH/POP 되는 데이터의 크기는 프로그래머가 정할 수 있습니다.
이처럼 스택이 밑에서부터 데이터를 추가하는 이유는 커널영역을 침범하지않기 위해서 밑에서부터 데이터를 추가합니다.
현재 이 그림에서는 TOP/BOTTOM의 위치와 다음과 같습니다.
여기서 C라는 데이터가 PUSH가 되면 TOP/BOTTOM의 위치는 어떻게 될까요?
아까 TOP은 B를 가리켰지만 현재는 C를 가리키고 있습니다.
BOTTOM은 그대로입니다.
BOTTOM의 위치는 항상 스택 가장 아랫값을 가리키고 있기 때문에 고정됩니다. 하지만 TOP의 위치는 데이터가 추가되거나, 데이터가 제거될 때 마다 달라집니다.