[c언어] 포인터와 메모리 동적 할당

프로그래밍을 하다 보면 종종 메모리를 동적으로 할당하고 사용해야 하는 경우가 있습니다. C 언어에서는 메모리 동적 할당을 위해 포인터를 사용합니다.

포인터란?

포인터(pointer)는 변수의 메모리 주소를 저장하는 변수입니다. 메모리 주소를 다루는 포인터를 사용하면 프로그램이 메모리를 보다 효율적으로 활용할 수 있습니다.

int num = 10;
int *ptr;
ptr = # // ptr에 num의 메모리 주소를 저장

위의 예제에서 ptrnum의 메모리 주소를 저장합니다.

메모리 동적 할당

프로그램 실행 중에 동적으로 메모리를 할당하기 위해 C 언어에서는 malloc 함수를 사용합니다.

int *ptr;
ptr = (int *)malloc(sizeof(int)); // int 형 변수를 위한 메모리 할당

위의 코드는 int형 변수를 위한 메모리를 동적으로 할당하는 예제입니다. malloc 함수는 요청한 크기의 바이트만큼의 메모리를 할당하고, 해당 메모리의 시작 주소를 반환합니다.

메모리 해제

동적으로 할당받은 메모리는 더 이상 필요하지 않을 때 해제해주어야 합니다. 이를 위해 C 언어에서는 free 함수를 사용합니다.

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

// 메모리 사용

free(ptr); // 메모리 해제

메모리를 해제하지 않으면 프로그램이 메모리를 계속 소비하므로, 메모리 누수가 발생할 수 있습니다.

메모리 동적 할당은 프로그램을 작성할 때 유용하지만, 메모리 누수나 잘못된 참조로 인한 버그를 일으킬 수 있으므로 주의가 필요합니다.

더 많은 정보는 C 언어 공식 문서에서 확인하실 수 있습니다.