안녕하세요.

C++ 에서 2차원 배열을 동적으로 할당하고, 해제하는 방법입니다.


아래 코드에서는 string.h 를 inclue 하는데요, 메모리 관련 함수이면서 string.h 에 포함된 점이 특이합니다.

memory.h 를 사용해도 된다지만 string.h 가 표준이라고 합니다.


StakOverflow : How do I declare a 2d array in C++ using new?

링크의 답변 중에는 2차원 배열을 하나의 memory block 에 할당하는 방법(포인터들의 크기만큼 메모리 절약)에 대한 답변과,

new - delete 보다는 std::vector<int> 를 사용하라는 답변도 있습니다.


#include <string.h>   // memset 함수 사용을 위해 include
 
/* 메모리 할당 */ 
int **arr = new int*[sizeY];
for(int i = 0; i < sizeY; ++i) {
    arr[i] = new int[sizeX];
    memset(arr[i], 0, sizeof(int)*sizeX);   // 메모리 공간을 0으로 초기화
}
 
/* 메모리 해제 */
for(int i = 0; i < sizeY; ++i) {
    delete [] arr[i];
}
delete [] arr;


이상으로 C++ 에서 2차원 배열을 동적으로 할당하고, 해제하는 방법을 살펴 보았습니다.

도움이 되었기 바랍니다.