728x90
반응형
오늘은 2차원 배열을 선언하는 것처럼,2차원 동적 메모리 할당에 대해 알아보겠습니다.
지난 피드에서 C언어 동적 메모리 할당을 알아보았습니다.
자세한 내용은 아래 링크를 참고해주세요.
2022.11.06 - [C언어] - [C언어] 동적 메모리 할당을 통해 배열처럼 사용하기(mallloc(), calloc()) - 공부하는 도비
동적 메모리 할당을 아래 코드처럼 간단히 할 수 있습니다.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *arr;
arr = (int *)malloc(sizeof(int) * 3);
return 0;
}
그럼 2차원 배열로 할당받고 싶을 땐 어떻게 해야 할까요?
2차원 배열을 할당받는 방법은, malloc() 함수를 여러 번 호출하는 것입니다.
이중 포인터로 arr을 선언해주고,
각 포인터에 새로운 메모리를 동적으로 할당해줍니다.
(n × n) 배열을 할당받길 원하면, 아래 코드처럼 쓰시면 됩니다.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int n;
int **arr;
scanf("%d", &n);
arr = (int**)malloc(sizeof(int*) * n );
for(int i = 0; i < n; i++)
{
arr[i] = (int*)malloc(sizeof(int) * n);
}
return 0;
}
메모리 해제 방법은, for문으로 할당 받았기 때문에 똑같이 for문을 사용하여 해제해야 합니다.
for(int i=0; i < n; i++)
{
free(arr[i]);
}
free(arr);
'C Programming' 카테고리의 다른 글
C언어 문자열 길이 출력 (strlen) - 공부하는 도비 (0) | 2022.11.22 |
---|---|
C언어 2차원 배열 동적 메모리 할당 후, 두 행렬의 곱 출력 - 공부하는 도비 (0) | 2022.11.06 |
동적 메모리 할당을 통해 배열처럼 사용하기(mallloc(), calloc()) - 공부하는 도비 (0) | 2022.11.06 |
C언어 레지스터 변수 - 공부하는 도비 (0) | 2022.11.06 |
C언어 전역 변수, 지역 변수, 외부 변수 - 공부하는 도비 (0) | 2022.11.06 |