현업에서 의외로 고생했던 문제들은
배열의 인덱스를 넘친 값을 사용하여
메모리를 훼손하는 경우였다.
메모리 훼손이 어떻게 되는지에 대한 간단한 예이다.
블로그 ARM 카테고리에서 사용한 실습 환경을 이용하였다.
먼저, 110~114라인의 코드를 추가한다.
(사용하지 않으면 최적화되서 어셈블리어를 아예 만들지 않아서 몇가지 코드가 더 추가되었다)

array 배열의 메모리 값이다.
array는 10개의 int값을 저장할 수 있으니, 인덱스는 0~9 까지 사용할 수 있다.

훼손되는 것을 보기 위해 메모리 size 공간을 48로 증가시켰다.
어떤 값들이 이미 있는 것이 보인다.

Disassembly 창에서 F5(step)으로 코드를 수행한다.

메모리를 보면, array배열의 다음 공간의 값이 훼손된 것을 볼 수 있다.

원래는 1이라는 값이 있던 곳이었다.
훼손되는 위치에 뭐가 있었느냐에 따라 상황은 여러가지이다.
문제가 없을 수도 있고 불량이 나타날 수도 있다.
무관한 코드를 추가했는데 불량이 나기도 한다.
실제로는 위와 같은 단순한 실수는 아니었고
배열을 조금 복잡하게 사용하는 경우였다.
어쨌든 결과적으로 인덱스를 실수해서
메모리를 훼손시킨 불량이었고
의외로 여러차례 겪었다.
최악의 경우는 익셉션 상황에서만 이런 일이 일어나서
몇 개월을 허비한 적도 있다.
배열 인덱스는 주의하고 또 주의하자 !