C언어 다차원 배열 메모리 할당 형태는?
C언어 알고리즘
2015. 9. 8. 20:15
C언어 다차원 배열 메모리 할당
지난 글에서 다차원(2차원) 배열은 가로와 세로 형태로 배열이 생성되는 걸 확인했었는데요. 그렇다면 이 데이터들이 메모리에 저장될 때는 어떻게 할당 될까요? 컴퓨터의 메모리는 1차원 구조이기 때문에 2차원 배열의 형식으로 데이터를 저장하지는 못하고 순서대로 1차원 구조로 저장됩니다. 예를 들어 다음과 같은 2차원 배열이 있다고 가정해볼게요.
int arr[3][2];
이 배열은 3행 2열의 형태로 배열이 생성되지만 메모리상에는 int arr[0][0], int arr[0][1]..... int arr[2][1] 순서대로 메모리에 저장됩니다. 이 내용을 확인해보기 위해서 간단한 예제를 만들어보겠습니다. 2차원 배열을 선언하고 각 요소의 메모리 주소값을 출력해보는 예제입니다.
3행 2열의 다차원 배열을 선언하고 arr[0][0]부터 arr[2][1]의 주소값을 출력하고 있는데요. int형 배열이기 때문에 각 요소 간의 간격이 4byte인 걸 확인할 수 있고 그 간격만큼 떨어진 위치에 연속해서 자리하는 걸 확인할 수 있습니다. 이처럼 다차원 배열도 메모리상에는 1차원적 형태로 저장됩니다.
이렇게 해서 다차원(2차원)의 배열이 메모리상에 할당되는 형태를 알아봤습니다. 수고하셨어요.