본문 바로가기

카테고리 없음

[C언어] 동적할당 malloc(), realloc() 함수

void main()
{
	int *ar;

	ar = (int*)malloc(5 * sizeof(int));
	ar[4] = 1234;

	ar = (int*)realloc(ar, 10 * sizeof(int));
	ar[9] = 5678;

	printf("ar[4] = %d, ar[9] = %d\n", ar[4], ar[9]);
	free(ar);
}

프로그램 실행화면


동적할당하면 malloc()함수를 많이 생각한다. 동적할당을 받았고 그 후에 사이를 변경하고 싶을 때에는 어떻게 하면 될까? 바로 realloc()함수를 사용하면 된다.


free()로 지우고 새로 할당하는 개념으로 생각하면 된다. 하지만 이전 데이터는 남아 있는 것을 알 수 있다. ar[4]의 값이 지워지지 않고 그대로 출력되는 것을 보면 알 수 있다.


언제 왜 동적할당이 필요한지를 알았다면 어느 정도 프로그래밍 실력이 쌓였다고 볼 수 있다.