메모리 동적할당 malloc / C

Tkdyun·2024년 2월 14일

분분한 낙화

목록 보기
9/9

메모리 동적할당이란?

알고리즘이 실행되는 도중, 런타임 과정에서 사용할 메모리 공간을 할당하는 것

동적할당되는 메모리는 힙 영역에 생성되며
컴파일 과정에서 메모리 크기가 결정되는 데이터 영역과
스택 영역에서의 정적 메모리 할당과는 다른 개념이다.


malloc

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()

동적으로 할당된 메모리는 힙 영역에서 프로그램이 종료될때까지 존재하기 때문에,

메모리 사용의 효율을 위해 꼭 동적 메모리 할당이 끝났으면
free() 함수를 이용해 동적 메모리 할당을 해제해 주어야한다.

참조

profile
"Hello World"

0개의 댓글