스택 오버플로우는 프로그램 실행 중 스택이라는 메모리 영역이 넘쳐버리는 상황을 의미합니다. 스택은 함수 호출 시 지역 변수나 리턴 주소 등을 저장하는 데 사용되며, 함수가 호출될 때마다 스택에 데이터가 쌓입니다. 그러나 스택에 할당된 메모리 공간이 제한적이므로, 너무 많은 함수 호출이나 재귀 호출이 발생하면 스택의 용량을 초과하여 스택 오버플로우가 발생할 수 있습니다.
예:재귀 함수가 종료 조건 없이 무한히 호출될 경우 스택 오버플로우가 발생할 수 있습니다.
예시(C언어)
void recursiveFunction() {
recursiveFunction(); // 종료 조건 없이 자신을 계속 호출
}
int main() {
recursiveFunction(); // 스택 오버플로우 발생
return 0;
}