런타임오류 발생 원인
Memory error occured, (e.g. segmentation error, memory limit Exceed, stack overflow,... etc)
코드를 실행했더니 위의 메세지가 나왔다.
이클립스, intellij 상에서는 오류가 나지 않았었는데 sw expert acadmy 사이트에서만 컴파일 오류가 자꾸 발생했다.
그래서 원인을 찾아보았다.
도대체 왜! 자꾸 런타임 오류가 뜰까?
백준 런타임 오류 원인이 발생하는 이유는 아래와 같다. 물론 sw expert academy에도 해당된다.
- 배열에 할당된 크기를 넘어서 접근했을 때
- 전역 배열의 크기가 메모리 제한을 초과할 때
- 지역 배열의 크기가 스택 크기 제한을 넘어갈 때
- 0으로 나눌 떄
- 라이브러리에서 예외를 발생시켰을 때
- 재귀 호출이 너무 깊어질 때
- 이미 해제된 메모리를 또 참조할 때
- 프로그램(main 함수)이 0이 아닌 수를 반환했을 때
추가적으로 아래와 같은 상황에서도 런타임오류가 발생했다.
- 요소를 출력할 때 아래와 같이 이스케이프 문자 뒤에 공백을 주지 않았을 때
System.out.printf("%3d",k);
- main 함수의 위쪽에 사용자 정의 함수를 구현했을 때
- static int num=0; 으로 전역변수를 초기화하고, main 함수내에서 int num=1;로 변수를 선언하여 사용했을때
컴파일 프로그램이 좀 깐깐한지 main 아래쪽으로 함수 정의한 것을 내려줬더니 잘 실행되었다. 굉장히 어이없는 이유지만..ㅎ
'TIL(Today I Learned)' 카테고리의 다른 글
mac mysql terminal로 mysql server 켜기 (0) | 2022.03.27 |
---|---|
JAVA 알고리즘 풀 때 입력받는 방법 (0) | 2022.02.26 |
자바에서 깨달은것들. (0) | 2022.02.06 |
스타트캠프 - 관심사 분석하며 터득한 것들 (0) | 2022.01.15 |
Mac m1칩에서 zulu 설치하기 (0) | 2022.01.12 |