35.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));

해설

포인터에 역참조를 하여 값을 저장하려면 저장할 공간이 있어야 하겠죠? 포인터 numPtr1int 포인터이므로 malloc 함수에 sizeof(int) 또는 4를 넣어주면 되고, numPtr2long long 포인터이므로 malloc 함수에 sizeof(long long) 또는 8을 넣어주면 됩니다.