[문] 프로그램을 컴파일할 때는 아무 문제가 없는데
실행도중에 Array bounds exceeded가 뜨면서 멈춰버립니다. 왜 그런거죠?
[답] Array bounds exceeded 에러라는 것은 한 마디로 얘기해서
배열이 가질 수 없는 인덱스를 부여했을 때 발생하는 에러입니다.
예를 들어
real :: a(5)
이렇게 5개의 기억공간을 가지는 실수형변수를 선언했다고 하죠.
이런 경우
a(1)=1.0
a(2)=5.0
a(3)=4.0
a(4)=7.0
a(5)=9.0
a(6)=5.0
이런 식으로 값을 부여할 때
a(6)=5.0
이 라인에서 어레이 바운드 익시디드 에러가 발생합니다.
비유를 하자면
101호 부터 505호까지의 방을 가진 오피스텔이 있을 때
우편물을 506호에 배달해달라고 하는 경우라 할 수 있겠습니다.
"배열의 선언범위를 넘어서는 인덱스의 사용으로 발생하는 에러"
이러한 에러는
반복계산을 하거나, 인덱스를 이용하여 연산을 한 후
이 연산결과로 나온 인덱스를 배열로 선언된 변수에 부여하는 경우 자주 발생합니다.
해결방법은
에러가 발생한 라인 바로 위에서 인덱스값을 확인해보고
배열형 변수의 선언부로 가서 선언된 것과 비교해보는 것입니다.
인덱스가 선언범위를 벗어나는 이유는 여러 가지가 있습니다.
해결방법은 각자 생각해보시길 적극 권장합니다.