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, 디스크) 이상 저장할 수 없습니다.