[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); // 할당된 메모리를 해제
메모리 누수와 오류
동적 메모리를 사용할 때 중요한 점은 메모리 누수를 방지하는 것입니다. 메모리를 할당했지만 해제하지 않으면 시스템 리소스가 고갈되는 메모리 누수가 발생할 수 있습니다. 또한, 잘못된 포인터 사용으로 인해 메모리 오류가 발생할 수 있으므로 주의가 필요합니다.
포인터와 메모리 관리는 프로그래밍 언어에서 중요한 개념이며, 올바르게 이해하고 활용한다면 프로그램의 효율성을 높일 수 있습니다.