row-major memory

2차원 배열은 표처럼 보이지만 한 줄 메모리에 저장된다

C++의 int matrix[3][4]는 행 0을 모두 저장한 뒤 행 1, 행 2 순서로 이어 붙입니다.

논리적으로 보는 3행 4열 표

행/열 0 1 2 3 row 0 [0][0] [0][1] [0][2] [0][3] row 1 [1][0] [1][1] [1][2] [1][3] row 2 [2][0] [2][1] [2][2] [2][3]

실제 메모리 순서

0[0][0] 1[0][1] 2[0][2] 3[0][3] 4[1][0] 5[1][1] 6[1][2] 7[1][3] 8[2][0] 9[2][1] 10[2][2] 11[2][3]
offset = row * 열개수 + col

예: matrix[1][2]1 * 4 + 2 = 6번째 칸입니다.

큰 묶음입니다. 한 행이 끝나야 다음 행으로 갑니다.

같은 행 안에서 왼쪽부터 오른쪽으로 이어집니다.

주소 계산

열 개수를 알아야 다음 행의 시작 위치를 계산할 수 있습니다.