스택오버플로우(Stack Overflow)란
Stack Overflow는 Stack영역의 메모리가 지정된 범위를 넘어갈 때 발생한다.
보통 함수에서 지역 변수를 선언하게되면 Stack이라는 메모리 영역에 할당되는데, 함수들이 호출될 때마다 각 함수에 선언된 지역 변수들은 Stack에 할당되었다가 해제된다.
그러다 해당 변수의 크기가 Stack보다 크거나, 함수를 무한으로 호출하고 있거나, Stack을 넘어가 다른 곳에 위치하고 있는 경우 Stack Overflow가 발생한다.
-
해당 변수의 크기가 Stack보다 큼
-
함수를 무한으로 호출
-
Stack을 넘어가 다른 영역에 위치함
스택오버플로우 해결방법
스택오버플로우를 해결하려면 위의 3가지를 반대로만 해주면 된다.
-
해당 변수의 크기를 Stack보다 작게 만듬
-
함수 무한 호출을 막음
-
존재하지 않는 인덱스나 주소를 지정하고 있지는 않은지 확인
-
Stack이 아닌 Heap에 할당하기 동적할당을 사용해 저장하게 되면 Stack이 아닌 Heap에 저장하게 된다.
-
Stack의 크기 조절하기 Stack의 크기를 직접 늘려주어서
해당 변수의 크기보다 스택의 크기를 늘려주면 된다
스택오버플로우 사이트
Stack Overflow
개발을 하다보면 한 번쯤은 일어나게되는 오류여서 그런지, 해외에는 스택오버플로우라는 사이트 자체가 있다. 개발자들을 위한 커뮤니티로 보통 Q&A가 주를 이루는데, 재야의 고수분들이 열심히 답변을 달아주시고 게시판도 활성화가 잘 되어있는 편이라 개발자 커뮤니티중에서는 가장 유명하고 가장 이용자가 많다.
댓글남기기