반응형

예제2.cpp
0.00MB

안녕하세요. 2차원 배열 동적할당하기 두 번째글입니다.

 

1편에서 처럼 2차원 배열을 표현하게 되면 column끼리는 바이트가 순차적입니다.

 

하지만 row끼리는 다른 메모리 공간에서 할당받게 됩니다. 

 

메모리 공간이 순차적이지 않기 때문에 배열에 접근할 때마다 불필요한 동작이 생기게 됩니다. 

 

메모리 공간을 활용하기 위해 다른 방법을 사용하도록 하겠습니다.

 

그림과 같이 일차원 배열을 마치 이차원 배열처럼 표현할 수 있습니다.

일차원 배열로 이차배열만들기

 

장점 : 메모리가 1편처럼 끊어지지 않습니다.

단점 : 1. 배열을 사용할 때 인덱스가 복잡하다는 것입니다. 

      

 

int* mat;       

mat = (int*)malloc(sizeof(int) * column * row);      // 배열의 크기만큼 메모리 할당

 

    for (int i = 0; i < column; i++)

    {

        for (int j = 0; j < row; j++)

        {

            mat[(column * i) + j] = (i * column) + j;      //(i열 ...) + j행

        }

    }

 

메모리를 한 번 할당했으니 메모리 해제도 한 번만 해줍니다.

free(mat);

 

그렇다면 이제 주소를 한 번 찍어보도록 하겠습니다.

3x3배열
5x5배열

728x90
반응형

+ Recent posts