알고리즘이 실행되는 도중, 런타임 과정에서 사용할 메모리 공간을 할당하는 것
동적할당되는 메모리는 힙 영역에 생성되며
컴파일 과정에서 메모리 크기가 결정되는 데이터 영역과
스택 영역에서의 정적 메모리 할당과는 다른 개념이다.
malloc 함수는 void형 포인터를 반환 하고
인자값으론 동적으로 할당할 메모리의 크기 를 받는다.
-> 할당한 메모리의 첫번째 주소를 return 해주고
메모리 할당 실패 시에는 NULL 리턴
int main(){
int* arr;
arr = (int*)malloc(sizeof(int)*4);
for (int i=0; i<4; i++){
scanf("%d",arr[i]);
}
for (int i=0; i<4; i++{
printf("%d ",arr[i]);
}
free(arr);
}
배열에 동적으로 메모리를 할당한 코드
sizeof(int)*4 를 인자로 사용했고,
반환된 void형 포인터를 int형 포인터로 캐스팅해서
arr에 메모리 주소를 할당
동적으로 할당된 메모리는 힙 영역에서 프로그램이 종료될때까지 존재하기 때문에,
메모리 사용의 효율을 위해 꼭 동적 메모리 할당이 끝났으면
free() 함수를 이용해 동적 메모리 할당을 해제해 주어야한다.