예제: 동적 메모리 할당, 사용, 해제

  • 2 minutes to read

다음 코드는 C 언어에서동적 메모리 할당에 대한 가장 최소한의 코드를 보여줍니다.

코드: memory_allocation.c

// memory_allocation.c
// 동적 메모리 할당
#include <stdio.h>
#include <stdlib.h> // malloc 함수 사용을 위한 헤더 파일 추가 

int main(void)
{
    //[1] 포인터 변수 선언
    int* num;

    //[2] 메모리 할당
    num = (int*)malloc(sizeof(int)); // 반드시 sizeof 연산자로 크기 지정

    if (num) // 유효성 검사: NULL이 아니면 num 변수 사용
    {
        //[3] 할당된 공간에 값 대입
        *num = 1234;

        //[4] 포인터 변수의 값 참조
        printf("%d\n", *num); // 1234 

        //[5] 메모리 해제
        free(num);
    }

    return 0;
}

결과

1234

num = (int*)malloc(sizeof(int)) 코드를 사용하면 int 타입의 크기 만큼의 포인터를 만들어 num 변수에 할당해줍니다. 처음 이 코드를 보면 복잡해 보이는데요. 다음 3단계로 이해해도 됩니다.

num = malloc(4)
num = malloc(sizeof(int))
num = (int*)malloc(sizeof(int))

위 세 가지 스타일의 코드 중 하나를 사용해도 실행은 될 수 있습니다만 마지막 형태를 반드시 사용하기를 추천합니다.

단순하게 int 타입의 변수를 선언하고 초기화하고 사용하려면 malloc 함수를 사용할 필요가 없습니다. 하지만 포인터 변수는 메모리를 처음 할당하거나 다시 할당할 때에는 반드시 malloc 함수 등을 사용하여 메모리를 할당하고 사용해야 합니다.

C 언어 동적 메모리 할당 동영상 강의

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com