32.2 메모리에 값 저장하기

이번에는 할당한 메모리에 값을 저장해보겠습니다.

memory_dereference.c

#include <stdio.h>
#include <stdlib.h>    // malloc, free 함수가 선언된 헤더 파일

int main()
{
    int *numPtr;    // int형 포인터 선언

    numPtr = malloc(sizeof(int));    // int의 크기 4바이트만큼 동적 메모리 할당

    *numPtr = 10;   // 포인터를 역참조한 뒤 값 할당

    printf("%d\n", *numPtr);    // 10: 포인터를 역참조하여 메모리에 저장된 값 출력

    free(numPtr);    // 동적 메모리 해제

    return 0;
}

실행 결과

10

malloc 함수로 할당한 메모리에 값을 저장할 때는 *numPtr = 10;처럼 포인터를 역참조한 뒤 값을 저장하면 됩니다. 마찬가지로 printf 함수로 값을 출력할 때도 포인터를 역참조하여 값을 가져오면 됩니다.

메모리를 할당하고 사용한 뒤에는 반드시 free 함수로 해제를 해줍니다.

참고

다음과 같이 malloc 함수에 sizeof(int) * 1024 * 1024 * 1024를 넣으면 어떻게 될까요?

numPtr2 = malloc(sizeof(int) * 1024 * 1024 * 1024);

물론 문제없이 할당이 됩니다. 계산을 해보면 4294967296인데 GiB로는 4GiB입니다. 더 큰 메모리도 할당할 수 있지만 실제로 값을 저장할 때는 시스템의 한계(RAM, 디스크) 이상 저장할 수 없습니다.