프로그래밍

동적할당이란 무엇인가?

하바사 2022. 8. 16. 00:06

예를 들어 회원들을 관리하는 프로그램을 만든다고 생각해 보자.

대충 회원 수가 100명 이하일 것 같다.

그러면 칸이 100개인 배열을 만들어서 회원 1번, 회원 2번, ... 100번 회원까지 정보를 입력할 수 있을 것이다.

앗, 그런데 회원수가 100명이 넘어갔다? 

그러면 회원 정보 입력하는 공간이 부족해서 오류가 날 것이다.

'동적할당'이란 이렇게 미리 공간을 정해두는 게 아니고 그때그때 필요하면 공간을 만드는 메모리 할당 방식이다.

회원이 한 명 생길 때마다 회원 정보 칸 하나를 확보시키는 것이다.

 

malloc의 경우, 자료형이 정해져 있지 않은 void*(void 포인터)이다. 고로 크기를 정해줄 때 형변환을 실시한다.

왜 malloc이 형이 정해져있지 않은 void*인가? 컴퓨터가 식당 주인이고 프로그래머가 손님이라고 생각해 보자.

손님이 '식기 주세요~'라고 하면 식당 주인은 그 식기가 컵인지, 밥그릇인지, 압젚시인지, 국그릇인지 모른다.

아마 가장 무난한 앞접시를 주겠지. 고로 컴퓨터는 식당 주인의 입장처럼 void*라는 정해지지 않는 자료형의 공간을 프로그래머에 내어주고, 프로그래머는 원하는 자료형으로 바꾸려면 직접 형변환(국그릇으로 주세요)을 해야하는 것이다.