hrming

16. Stack Overflow 본문

기타/면접 준비

16. Stack Overflow

hrming 2022. 5. 3. 15:03

Stack Overflow 발생원인

Stack Overflow는 Stack 영역의 메모리가 지정된 범위를 넘어갈 때 발생한다.

 

Stack 메모리는 보통 지역 변수가 저장되는 영역이다.

함수에서 지역 변수를 선언하면 지역 변수는 Stack 메모리에 할당되고 함수를 빠져나오면 Stack 메모리에서 해제된다.

하나의 프로그램이 실행될 때 수많은 함수를 호출하고 빠져 나오게 되는데 그 때마다 함수에서 사용하는 지역 변수는 Stack 영역에 할당되고 해제되는 것을 반복하게 되며 그에 따라 사용하는 Stack 영역도 변하게 된다.

만약, 한 함수에서 너무 큰 지역 변수를 선언하거나 함수를 재귀적으로 무한정 호출하게 되면 stack overflow가 발생할 수 있다.

 

Stack Overflow 해결

stack overflow가 발생하면 컴파일러 옵션에서 stack 영역의 크기를 늘리거나 또는 함수에서 사용하는 지역 변수의 크기를 줄이거나 아니면 지역 변수를 전역 변수로 바꾸어 해결할 수 있다.

 

출처: https://keepdev.tistory.com/21

'기타 > 면접 준비' 카테고리의 다른 글

18. 웹 애플리케이션 서버 (WAS)  (0) 2022.05.07
17. 메모리 누수  (0) 2022.05.03
15. 기본형 변수와 참조형 변수  (0) 2022.05.02
14. 객체지향  (0) 2022.05.02
13. JAVA & JVM  (0) 2022.05.02
Comments