728x90
컴퓨터에서 함수 호출, 지역 변수 저장, 리턴 주소 저장 등을 위해 사용하는 후입 선출(LIFO, Last in First Out) 방식의 메모리 구조이다.
후입 선출 (LIFO Last in First Out)
나중에 들어간 것이 먼저 나온다.
"가장 마지막에 넣은 데이터가 가장 먼저 나오는 구조"
ex) 책 더미
책을 책상위에 한 권씩 쌓는다고 생각을 해보면
1. 첫번째 책 놓기
2. 두번째 책 놓기
3. 세번째 책 놓기
아래의 그림처럼 되어있다.
책을 꺼낼 때를 생각을 해보자.
3번째에 있는 책을 가장 먼저 꺼내고
2번째에 있는 책을 꺼낸다.
1번째에 있는 책을 꺼낸다.
3 -> 2 -> 1
메모리 스택을 "책 더미"로 비유를 하면 이해하기가 매우 쉽다.
책상 위에 책을 하나씩 쌓는다고 생각을하고, 책마다 이름이 함수 이름이라고 생각하자
main () 책 : 가장 먼저 책상에 나두는 책
func1() 책 : main()이 func1을 호출하면 그 위에 올리는 책
func2() 책 : func1() 이 func2()를 호출하면 또 그 위에 올리는 책
만약 함수가 끝나면?
func2() 책을 다 읽어서 책을 꺼내면 func2() 책이 제거
그다음 func1()이 끝나면 func1() 책을 제거
마지막으로 main() 책이 끝나면 모든 책이 사라짐 이는 곧 프로그램 종료를 의미한다.
스택은 위에서 아래로 자란다.
728x90