함수의 호출과 복귀에 사용되는 스택
시스템 스택은 subroutine call에 관련된 정보를 저장하는데 사용된다.
함수의 매개변수, 함수가 끝나면 돌아갈 return 주소, 함수의 지역변수를 저장한다.
sub program에 사용되는 스택을 Stack frame
이라고 한다.
스택은 한정된 크기를 가지고 있기 때문에, "overflow"
가 일어날 수 있다.
오버플로우는 리턴하지 않는 함수들이 계속 호출 될 경우에 일어난다.
프로그램 종료, 메모리 해제 등 적절한 조치가 취해지지 않으면 다른 프로그램, OS의 메모리 영역을 침범할 수 있기 때문에 위험하다.
#include <stdio.h>
void A()
{
printf("A\n");
}
void B()
{
printf("B\n");
}
int main(void)
{
A();
B();
return (0);
}
void recur()
{
printf("Stack Overflow\n");
recur();
}
int main(void)
{
recur();
return (0);
}