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 함수를 사용하면서 바로 반환해도 됩니다.