[C 자료구조]동적 할당

maroo·2022년 7월 16일
0
post-custom-banner

동적 할당에 대한 기본적인 이해를 전제로 Chapter 4가 진행된다고 한다.
이에 Chapter 4에 들어가기 전에 동적 할당에 대해 포스팅하려 한다.

동적 할당

포인터에 메모리 할당

포인터에 주소를 대입하는 방법은,
포인터=&일반변수명
이 있다.
그런데 포인터에 주소값을 저장하기 위해 항상 다른 변수의 대입이 필요하다는 것은 아니지 않을까?
포인터에 내가 원하는 만큼 메모리를 할당하는 방법이 있지 않을까?

그것이 바로 동적 할당이다.

동적 할당

즉, 동적 할당은 서용자가 원하는 대로(='동적'의 의미) 메모리를 할당한다는 의미이다.
메모리를 할당하는 것에도 함수가 필요하다.
malloc함수
-사용할 메모리 공간 확보하는 함수
-포인터=malloc(메모리 크기)
예시)

int* numP;
numP=malloc(sizeof(int))

사용하는 메모리
-포인터=&일반변수명: 스택(Stack)부분의 메모리 사용
-포인터=malloc(메모리 크기): 힙(heap)부분의 메모리 사용

free함수
-motivation: 스택에 생성된 메모리는 따로 처리를 해주지 않아도 되지만, malloc을 사용해 힙에서 할당한 메모리는 반드시 회수를 해 줘야 한다.(메모리 할당만 하는 걸 반복하면 언젠가는 메모리가 바닥날 것이므로!)
-free(포인터) (malloc으로 메모리를 할당한 포인터.)
예시)

free(numP)
profile
할수이따 ~
post-custom-banner

0개의 댓글