32.6 연습문제: 메모리 할당하기
다음 소스 코드를 완성하여 2147483647 9223372036854775807이 출력되게 만드세요.
practice_memory_alloc.c
#include <stdio.h> #include <stdlib.h> #include <limits.h> int main() { int *numPtr1 = ①_________________; long long *numPtr2 = ②____________________; *numPtr1 = INT_MAX; *numPtr2 = LLONG_MAX; printf("%d %lld\n", *numPtr1, *numPtr2); free(numPtr1); free(numPtr2); return 0; }
실행 결과
2147483647 9223372036854775807
정답
① malloc(sizeof(int)); ② malloc(sizeof(long long));
해설
포인터에 역참조를 하여 값을 저장하려면 저장할 공간이 있어야 하겠죠? 포인터 numPtr1은 int 포인터이므로 malloc 함수에 sizeof(int) 또는 4를 넣어주면 되고, numPtr2는 long long 포인터이므로 malloc 함수에 sizeof(long long) 또는 8을 넣어주면 됩니다.