32.4 널 포인터 사용하기

메모리가 할당된 포인터도 있지만, 메모리가 할당되지 않은 포인터도 있겠죠? 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요(Visual Studio, Windows x86).

null_pointer.c

#include <stdio.h>

int main()
{
    int *numPtr1 = NULL;    // 포인터에 NULL 저장

    printf("%p\n", numPtr1);    // 00000000

    return 0;
}

실행 결과

00000000

NULL이 들어있는 포인터를 널 포인터(null pointer)라고 하며 아무것도 가리키지 않는 상태를 뜻합니다. 따라서 역참조는 할 수 없습니다.

실무에서는 다음과 같이 포인터가 NULL인지 확인한 뒤 NULL이면 메모리를 할당하는 패턴을 주로 사용합니다.

if (ptr == NULL)         // ptr이 널 포인터라면
{
    ptr = malloc(1024);   // 1024바이트만큼 메모리 할당
}

지금까지 동적 메모리 할당과 해제에 대해 배웠는데 메모리 사용은 초보자가 이해하기 힘든 것이 사실입니다. 아직은 모든 원리를 이해하지 않아도 되며 문법만 외워서 사용해도 상관없습니다. 일단은 메모리를 할당했으면 해제해야 된다는 점만 기억하면 됩니다.