46.7 연습문제: 메모리 할당 함수 만들기

다음 소스 코드를 완성하여 "Uranus"가 출력되게 만드세요.

practice_return_void_pointer.c

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void *allocMemory()
{
    _______________________________

    return ptr;
}

int main()
{
    char *s1;

    s1 = allocMemory();
    strcpy(s1, "Uranus");
    printf("%s\n", s1);
    free(s1);

    return 0;
}

실행 결과

Uranus

정답

void *ptr = malloc(100);

해설

함수 allocMemory을 호출하여 반환된 포인터에 문자열을 복사해서 출력하고 있으며 반환된 포인터를 free 함수로 해제하고 있습니다. 따라서 allocMemory 함수 안에서 malloc 함수로 메모리를 할당한 뒤 포인터를 반환해주면 됩니다. 단, void *allocMemory()와 같이 함수의 반환값 자료형은 void 포인터이므로 메모리를 할당할 포인터도 void 포인터로 선언합니다

간단하게 return malloc(100);과 같이 malloc 함수를 사용하면서 바로 반환해도 됩니다.