[c언어] 동적 메모리 할당을 위한 예외 처리 방법
동적 메모리 할당은 프로그램에서 필요한 메모리 공간을 런타임에 할당하는 방법으로, 메모리의 크기를 미리 알 수 없는 경우에 유용합니다. 그러나 메모리 할당 실패는 프로그램의 안정성을 침해할 수 있기 때문에 이를 처리하는 방법이 중요합니다.
할당 실패 예외 처리 방법
메모리 할당 함수는 주로 malloc
함수를 사용합니다. 이 함수는 메모리를 성공적으로 할당할 경우 할당된 메모리 블록의 포인터를 반환하고, 실패할 경우 NULL
을 반환합니다. 이때 발생하는 할당 실패 상황을 예외 처리하는 방법을 알아봅시다.
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr;
ptr = (int*)malloc(sizeof(int));
if (ptr == NULL) {
printf("메모리 할당 실패\n");
} else {
printf("메모리 할당 성공\n");
free(ptr);
}
return 0;
}
위 예제에서는 malloc
함수가 반환한 포인터인 ptr
이 NULL
인지를 확인하여 할당 실패를 처리하고 있습니다.
예외 처리 함수 활용
또 다른 방법으로, 메모리 예외를 처리하는 사용자 정의 함수를 작성할 수 있습니다. 이 함수를 통해 메모리 할당 시 발생하는 예외를 일관되게 처리할 수 있습니다.
#include <stdio.h>
#include <stdlib.h>
void *safe_malloc(size_t size) {
void *ptr = malloc(size);
if (ptr == NULL) {
printf("메모리 할당 실패\n");
exit(1);
}
return ptr;
}
int main() {
int *ptr;
ptr = (int*)safe_malloc(sizeof(int));
printf("메모리 할당 성공\n");
free(ptr);
return 0;
}
이 예제에서는 safe_malloc
함수를 정의하여 할당 실패 시 프로그램을 종료시키는 예외 처리 방법을 보여줍니다.
동적 메모리 할당 시 발생할 수 있는 예외를 처리하는 것은 프로그램의 안정성을 높이는 중요한 요소입니다. 위의 예외 처리 방법을 적절히 활용하여 안정성을 확보하는 것이 좋습니다.
Reference:
- Kernighan, B. W., & Ritchie, D. M. (1988). The C programming language (2nd ed.). Pearson Education, Inc.