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

해설

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

최근 수정: 2018년 2월 7일, 수요일, 오전 11:22