C:TIL- malloc 메모리 해제

Nayeon Kim·2021년 9월 19일
2

c language

목록 보기
4/9

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);
}
profile
Department of Computer Science

0개의 댓글