[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 함수가 반환한 포인터인 ptrNULL인지를 확인하여 할당 실패를 처리하고 있습니다.

예외 처리 함수 활용

또 다른 방법으로, 메모리 예외를 처리하는 사용자 정의 함수를 작성할 수 있습니다. 이 함수를 통해 메모리 할당 시 발생하는 예외를 일관되게 처리할 수 있습니다.

#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: