main 함수에서 sub함수를 호출했다고 가정.
sub 함수에서 어떤 변수를 malloc으로 임시 메모리를 생성하고 그걸 return해줘야 한다면, 그 메모리는 어떻게 해제해줄 수 있을까
1. sub 함수에서 return 이전에 해제할 경우, return이 제대로 진행될 수 없음.
2. sub 함수에서 return 이후에 해제할 경우, 그 해제 코드는 실행 자체가 안되므로 해제될 수 없음
->main 함수에서 sub 함수의 return값을 받는 변수를 따로 만들어 그 변수를 free해주면 됨
Score* sub(int m, int f)
{
Score* p3;
p3 = (Score*)malloc(sizeof(Score));
if (p3 == NULL) {
fprintf(stderr, "메모리 부족으로 할당할 수 없습니다.");
exit(1);
}
p3->a = m;
p3->b = f;
return p3;
}
int main(void)
{
Score* p3;
p3 = sub(100, 100);
printScore(p3);
free(p3);
}