소프트웨어/C 언어

[C언어]34.포인터의 첫번째 응용 동적할당 -1- (동적할당이란)

리습 2018. 10. 15. 23:59

 

안녕하십니까. 리습입니다.

 컴퓨터에게 작업을 시키기 위해서 우리는 변수라는 것을 사용하였습니다. 만약 변수로 선언하기에 많은 양의 공간이 필요하다면 배열을 선언하여 해결하였죠. 하지만 다음과 같은 상황이 있다고 가정해 봅시다. 우리는 전국의 카페에서 사용 가능한 회원관리 프로그램을 만들려고 합니다. 각 카페에는 최소 1명에서 최대 100000명의 관리 회원이 있다고 하였을 때 우리는 어떤식으로 회원관리 프로그램을 만들 수 있을까요? 단순하게 우선 배열로 구현을 해봅시다.

 코드

#include <stdio.h>

int main(void)
{

int membership[10000] = { 0 };
int membership_number;
printf("회원 번호 : ");
scanf("%d", &membership_number);
printf("적립 포인트 : ");
scanf("%d", &membership[membership_number]);
printf("적립 내용 - 회원 번호 [%d] 적립 포인트 [%d]\n", membership_number, membership[membership_number]);
return 0;

}

 이렇게 구현한다면 회원번호에 맞추어 적립포인트를 입력할 수 있을 것입니다. 하지만 이 프로그램에도 매우 큰 단점이 있죠. 바로 1명을 관리하던지, 100000명을 관리하던지간에 int 배열이 100000개가 필요하다는 것입니다. 매우 비효율적인 일이죠.

 이런 비효율을 막기 위해서는 프로그램을 작성 할  때 변수크기를 지정하는 것이 아닌 프로그램이 실행되는 동안 변수공간을 만들어야만 합니다. 이를 위해 존재하는 것이 동적 할당(Dynamic allocation)입니다.

 이제 동적할당이라는 것을 어떻게 사용하고 장,단점은 무엇인지 알아보도록 하겠습니다.