2차원 배열을 메모리로 할당 받아보자.
더블포인터를 이용해서 한번 할당받고 다시 각각의 2차원배열 요소들을 할당 받아야 한다.
아래예제를 보자. 처음보면 상당히 복잡하고 난해할 수 있다. 특히 이중포인터를 사용했기 때문에 쉽게 이해가 가지 않을 수 있다. 이해가 가지 않는다면 우선 해당 코드를 복사해서 사용하고 차차 이해해도 된다.
출처: https://hijuworld.tistory.com/59
int** createArray(int rows, int cols) {
int** array = malloc(rows * sizeof(int*)); // 행 포인터 배열 할당
for (int i = 0; i < rows; i++) {
array[i] = malloc(cols * sizeof(int)); // 각 행에 대한 메모리 할당
}
return array;
}
할당된 2차원 배열의 각 요소를 초기화할 필요가 있다.
이는 각 요소를 특정 값으로 설정함으로써 이루어진다.
void initializeArray(int** array, int rows, int cols, int value) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
array[i][j] = value;
}
}
}
2차원 배열의 메모리 해제
2차원 배열의 메모리를 해제할 때는 할당의 반대 순서로 진행한다.
먼저 각 행의 메모리를 해제하고, 마지막으로 행 포인터 배열의 메모리를 해제한다.
void freeArray(int** array, int rows) {
for (int i = 0; i < rows; i++) {
free(array[i]); // 각 행의 메모리 해제
}
free(array); // 행 포인터 배열의 메모리 해제
}
그리고 메모리 해제역시 2차원배열이기 때문에 각 요소들을 해제하고 2차원배열을 해제해줘야 한다.
'C 언어' 카테고리의 다른 글
2차원 배열 동적 할당하기 (0) | 2024.05.15 |
---|---|
순열 알고리즘: C 프로그래밍에서의 구현 (1) | 2024.05.02 |
공백 문자열과 빈 공간 문자열의 차이 (1) | 2024.04.22 |
문자를 숫자로 변환하기 (0) | 2024.04.20 |
토큰(token): 문자열이나 코드를 구성하는 작은 단위 (0) | 2024.04.14 |