Note
[c++] 2차원배열의 동적할당
Daybreak21
2023. 4. 9. 18:55
이중포인터를 활용함
1차원 배열을 for문으로 여러번 할당하여 2차원배열을 할당한다.
rows*cols 크기의 int행렬 mat를 동적할당하는 과정
-2차원배열의 동적 할당
int** alloc2DInt(int rows, int cols) {
if (rows <= 0 || cols <= 0) return NULL;
int** mat = new int* [rows];
for (int i = 0; i < rows; i++) mat[i] = new int[cols];
return mat;
}
- int*형 데이터를 저장할 공간 rows개를 동적으로 할당한다. 이 공간의 주소는 이중포인터 변수 mat (int **mat)에 저장한다.
- 행렬의 i번째 행의 요소를 저장하기 위한 int형 배열을 동적으로 할당하여 그 주소를 mat[i]에 저장한다. 이때 요소의 개수는 cols개이다.
- 모든 행에 대해 2번 과정을 반복한다.
-2차원배열의 동적 해제
void free2DInt(int** mat, int rows, int cols = 0) {
if (mat != NULL) {
for (int i = 0; i < rows; i++) delete[] mat[i];
delete[] mat;
}
}
해제는 할당의 역순
*정리
mat : int**형 (mat는 mat[i]와 mat[i][j]접근가능한 이중포인터 변수)
mat[i] : int*형 (mat[0] 는 mat[0][0]의 주소가 저장되있는 포인터)
mat[i][j] : int형