Array Memory

다차원 배열 인덱스 매핑

C++의 2차원 배열은 행 우선 순서로 이어진 메모리이며, 행과 열 인덱스가 오프셋 계산으로 바뀐다.

arr[i][j]가 메모리 위치가 되는 과정

row-major

배열 선언

행과 열 크기가 타입과 메모리 배치를 결정한다.

행 선택

i번째 행은 i * 열 개수만큼 시작 위치가 밀린다.

열 선택

j 값이 행 내부 오프셋으로 더해진다.

범위 검사

C++은 기본 범위 검사를 하지 않아 인덱스 실수를 조심한다.

arr[rows][cols]i * cols+ joffsetelement
행·열 인덱스

2차원 문법은 표처럼 보이지만 실제 저장은 연속 메모리다. 캐시 효율도 이 행 우선 순서를 따라 달라진다.