-
3.3 동적 메모리 할당자료구조(C)/배열,구조체,포인터 2020. 7. 17. 11:10
동적 메모리 할당(dynamic memory allocation)
C언어에서는 필요한 만큼의 메모리를 운영체제로 부터 할당받아서 사용하고, 상용이 끝나면 시스템에 메모리를 반납하는 기능이 있다.
히프(heep)
동적 메모리가 할당되는 공간
운영체제가 사용되지 않는 메모리 공간을 모아 놓은 공간이다.
동적 메모리 할당 코드
int *p;
p = (int *)malloc(sizeof(int)); 동적메모리 할당
*p = 1000; 동적메모리 이용
free(p); 동적메모리 반납
malloc()
- size 바이트 만큼의 메모리 블록을 할당한다.
- 동적 메모리 블럭의 시작 주소를 반환한다.
- 반환되는 주소의 타입은 void *이므로 이를 적절한 포인터로 형변환시켜야 한다.
- 포인터로만 사용이 가능하다. *p = 1000은 p가 가리키는 장소에 1000이 저장된다.
- 메모리 할당이 확보가 불가능 하면 NULL을 반환한다.
sizeof(int)
- int형의 크기를 반환한다.
free()
- 할당된 메모리 블록을 운영체제에게 반환한다.
- malloc() 함수가 반환했던 포인터 값을 잊어버리면 안 된다는 것이다. 포인터 값을 잊어버리면 동적 메모리를 반환할 수 없다.
'자료구조(C) > 배열,구조체,포인터' 카테고리의 다른 글
3.4 구조체와 포인터 (0) 2020.07.17 3.2 포인터 (0) 2020.07.13 3.1 배열 (0) 2020.07.09