프로그램을 개발할 때 같은 자료형의 변수나 객체를 여러 개 관리해야 하면, 이들을 요소로 하는 배열을 선언하여 사용합니다.

배열은 같은 자료형의 **요소(Element)**들로 이루어져 있는데, 각 요소의 위치를 **인덱스(Index)**라고 합니다.

처음 C언어에서 배열을 배우고, 사용할 때, 배열의 인덱스와 관련된 부분에서 자주 실수를 합니다.

현실에서는 첫 번째 요소라고 할 것을 프로그래밍할 때는 0번째 요소라고 해야 하는 데서 발생하는 인지적 실수, 사소한 부등호 실수, 그리고 인덱스를 벗어나서 참조할 수 있어도 경고를 띄워주지 않는 컴파일러 등이 주요 원인일 것입니다.

위와 같은 실수는 운이 좋으면 프로그램의 비정상 종료로 그치지만, 때에 따라 치명적인 취약점의 원인이 될 수도 있습니다.

대표적으로는 배열의 임의 인덱스에 접근할 수 있는 **Out of Bounds (OOB)**가 있습니다.

배열

배열은 연속된 메모리 공간을 점유하며, 배열이 점유하는 공간의 크기는 요소의 개수와 요소 자료형의 크기를 곱한 값이 됩니다.

흔히, 배열이 포함하는 요소의 개수를 **배열의 길이 (Length)**라고도 부릅니다.

Untitled