[c] 포인터와 메모리 관리

프로그래밍에서 포인터는 메모리 주소를 저장하는 변수입니다. 포인터를 사용하면 메모리를 효율적으로 활용할 수 있으며, 동적 메모리 할당을 통해 프로그램의 유연성을 높일 수 있습니다. 하지만, 잘못된 포인터 사용은 메모리 오류를 일으킬 수 있기 때문에 주의가 필요합니다.

포인터 변수 선언과 사용

C 언어에서는 포인터 변수를 선언할 때 *를 사용하고, 포인터가 가리키는 변수의 타입을 지정합니다.

예를 들어, int 형 변수를 가리키는 포인터를 선언하려면 다음과 같이 작성합니다.

int *ptr;

포인터 변수를 사용하여 메모리 주소를 참조하거나 수정할 수 있습니다.

int num = 10;
ptr = #  // ptr이 num의 주소를 가리킴
*ptr = 20;   // ptr이 가리키는 곳에 20을 저장

동적 메모리 할당

포인터의 가장 중요한 용도는 동적으로 메모리를 할당하고 해제하는 것입니다. malloc() 함수를 사용하여 메모리를 동적으로 할당하고, free() 함수를 사용하여 할당된 메모리를 해제합니다.

int *ptr = (int*)malloc(sizeof(int));  // int 크기의 메모리를 동적으로 할당
*ptr = 10;
free(ptr);  // 할당된 메모리를 해제

메모리 누수와 오류

동적 메모리를 사용할 때 중요한 점은 메모리 누수를 방지하는 것입니다. 메모리를 할당했지만 해제하지 않으면 시스템 리소스가 고갈되는 메모리 누수가 발생할 수 있습니다. 또한, 잘못된 포인터 사용으로 인해 메모리 오류가 발생할 수 있으므로 주의가 필요합니다.

포인터와 메모리 관리는 프로그래밍 언어에서 중요한 개념이며, 올바르게 이해하고 활용한다면 프로그램의 효율성을 높일 수 있습니다.

참고 자료