C Programming
C언어 2차원 동적 메모리 할당 - 공부하는 도비
DOVISH WISDOM
2022. 11. 6. 21:46
728x90
반응형
오늘은 2차원 배열을 선언하는 것처럼,2차원 동적 메모리 할당에 대해 알아보겠습니다.
지난 피드에서 C언어 동적 메모리 할당을 알아보았습니다.
자세한 내용은 아래 링크를 참고해주세요.
2022.11.06 - [C언어] - [C언어] 동적 메모리 할당을 통해 배열처럼 사용하기(mallloc(), calloc()) - 공부하는 도비
[C언어] 동적 메모리 할당을 통해 배열처럼 사용하기(mallloc(), calloc()) - 공부하는 도비
동적 메모리 할당 (Dynamic Memory Allocation) 프로그램 실행 도중 필요한 만큼 힙(heap) 영역의 메모리를 할당 받아 사용하는 방식입니다. 동적 메모리 할당시에는 malloc() 함수와 calloc() 함수가 있는데,
yang-wistory1009.tistory.com
동적 메모리 할당을 아래 코드처럼 간단히 할 수 있습니다.
#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);