프로그래밍 언어/C & C++ 정리

동적 할당 함수

뽀또치즈맛 2023. 1. 7. 20:20

프로그램에 필요한 메모리 저장 공간(이하 저장 공간)은 프로그램을 저장할 때 

변수나 배열을 선언을 통해 확보한다고 배웠다.

그런데 언제나 시작부터 변수나 배열 선언을 해서 저장 공간을 확보할 수 있는 건 아니다.

 

때로는 프로그램 실행 중에 저장 공간을 할당할 수도 있다.

이렇게 사용한 저장 공간은 다시 실행 중에 재활용을 위해 반납해야 한다.

이렇게 프로그램 실행 중에 저장 공간을 할당하는 것을 동적할당이라 한다.

 

동작 할당 되는 메모리는 힙 영역에 생성되며

컴파일 타임에 메모리의 크기가 결정되는 데이터 영역이나

스택 영역의 정적 메모리 할당과는 대조적인 개념이다.

 

int num;  <- 변수 공간을 확보하라!

int arr[2]; <- 배열의 공간을 확보하라!

 

 

malloc , free 함수

 

프로그램 실행 중에 메모리를 동적 할당할 때는 malloc 함수를,

반환할 때는 free 함수를 사용해야한다.

 

이 함수들을 사용할 때는 stdib.h헤더 파일을 인클루드해야 사용할 수 있다.

 

malloc함수 사용시 주의점

 

첫 번째는 malloc 함수의 반환값이 널 포인터인지 반드시 확인하고 사용해야 한다.

그 이유는,

메모리 할당 함수는 원하는 크기의 공간을 할당하지 못하면

0번지인 널 포인터를 반환한다.

 

두 번째는 사용이 끝난 저장 공간은 재활용할 수 있도록 반환해야 한다.

자동 지역 변수의 저장 공간은 함수가 반환될 때 자동으로 회수되지만

동적으로 할당한 저장 공간은 함수가 반환된 후에도

그대로 메모리에 남아 있다.

따라서 함수가 반환되기 전에 동적 할당한 저장 공간은

free 함수로 직접 반환해야 한다.

 

 

'프로그래밍 언어 > C & C++ 정리' 카테고리의 다른 글

C++ 기초 플러스 단원 정리  (0) 2023.01.08
전처리 지시자  (0) 2023.01.08
c++ 함수의 특질  (0) 2023.01.07
함수  (0) 2023.01.06
포인터  (0) 2023.01.04