2011년 7월 26일 화요일

스택 오버플로우

스택의 크기에는 항상 제한이 있다. 만약 함수가 자신을 재귀 호출하도록 하는 긴 연속이 있다면 그 호출은 또 다른 재귀 호출을 부르고 그 호출은 다시 또 다른 재귀 호출을 생성하고 계속한다면 이 연속에 있는 각 재귀 호출은 다른 활성 프레임을 스택에 놓이도록 할 것이다. 이 연속이 너무 길면 스택은 그 제한을 넘어서 성장하도록 시도할 것이다. 이것이 스택 오버플로우로 알려진 에러 조건이다. 만일 "스택 오버플로우"라는 에러 메시지를 만나면 일부 함수 호출이 재귀 호출의 과도한 긴 연속을 생성했다는 것과 같다. 스택 오버플로우에 대한 일반 원인은 무한 재귀이다. 함수가 무한적으로 재귀하면 실제로 스택이 스택의 크기 제한을 초과할 것이다.

댓글 없음:

댓글 쓰기