YUYANE

C / malloc() 과 free() 본문

Programming Languages/C

C / malloc() 과 free()

YUYA 2021. 2. 23. 13:46

학습 강의

www.boostcourse.org/cs112/joinLectures/41307

 

 

malloc ()

 

ptr = (cast-type*) malloc(byte-size)

 

ptr = (int*)mallox(100*sizeof(int));

 

int 형의 크기는 4바이트이므로, 위의 코드는 400 바이트의 메모리를 할당하며, 포인터 ptr은 할당된 메모리의 첫 번째 바이트 주소를 가진다.

 

- 각 블록을 default garbage 값으로 초기화 시킨다.

- 배열 크기 수정할 때, 문자열 복사 할 때 등 사용 가능하다. 

- 정해진 크기 만큼의 메모리를 할당하는 함수

- 메모리 할당 이후에는, 유한한 메모리를 효과적으로 관리하기 위해 반드시 free()를 이용하여 메모리 해제를 시켜줘야 한다. 그렇지 않으면 '메모리 누수'가 일어난다.

- <stdlib.h>에 선언

- 할당된 메모리의 데이터는 heap 영역*에 저장된다.

 

 

* 메모리 누수 

malloc()으로 할당 된 메모리에 저장된 값이 사용이 끝난 뒤에도 쓰레기 값으로 계속 남아 메모리 용량의 낭비를 발생시키는 현상

 

* 메모리 구조

메모리 구조

 

 

참고

www.geeksforgeeks.org/dynamic-memory-allocation-in-c-using-malloc-calloc-free-and-realloc/

Comments