내 스택 시뮬레이터, (7월 8일 수요일)
스택은 프로그램이 지역 변수 및 반환 주소와 같은 임시 데이터를 저장하는 메모리 영역입니다. 스택을 주방에 있는 접시 더미라고 생각해보세요. 새 접시는 맨 위에만 추가할 수 있고, 맨 위에서만 가져갈 수 있습니다. 프로그램은 이와 동일한 "후입선출(last in, first out)" 원칙을 사용하여 자신이 무엇을 하고 있는지 추적합니다. 함수가 호출될 때마다 프로그램은 지역 변수와 함수가 완료된 후 돌아갈 주소와 같은 내용을 포함하는 새 접시를 스택에 푸시합니다. 함수가 완료되면 해당 접시는 맨 위에서 팝되고 실행은 중단된 지점에서 정확히 다시 시작됩니다. 이 간단한 메커니즘은 프로그램이 함수 내에서 함수를 호출하고 항상 돌아갈 길을 찾을 수 있도록 하지만, 스택이 너무 커지거나 예상치 못한 데이터로 덮어쓰여지면 공격자가 프로그램의 실행 흐름을 가로채기 위한 좋은 표적이 되는 정확한 이유이기도 합니다.