개인적으로 학부과정을 되돌아보면서 프로그래밍중 생긴 의문이 있는대
malloc으로 동적메모리를 할당한다음 free로 그 할당한 곳을 풀어줘야지 메모리 누수가 안생긴다고 배웠습니다.
그런데 갑자기 든 의문은 동적메모리를 잡아준다음 코드 실행하다 exit를 만나는 경우에는 동적메모리가 남아있는지 궁금합니다.
대충 예제를 써보자면
int main()
{
int *a=(int*) malloc(sizeof(int)*20);
if(a == NULL)
{
pirntf("변수 a 메모리를 잡을수가 없어!\n");
exit(1);
}
int *b=(int*) malloc(sizeof(int)*10);
if(b == NULL)
{
pirntf("변수 b 메모리를 잡을수가 없어!\n");
exit(1);
}
free(a);
free(b);
return 0;
}
이런 코드일때 먼저 a를 잡고 b를 잡을때 메모리가 없어서 exit가 실행된다할때 잡혀있던 a는 free명령어를 만나보지도 못하고 종료가 될꺼라 예상이 됩니다.
그럼 종료가 되고도 a에대한 메모리가 잡혀있는 상태인가요?
제가 이에 개인적으로 찾아보았지만
이렇게 2개의 답변이 있고 2개의 답변이 상반되는 답변이 올라와 있내요.
어떤것이 정답인지 궁금합니다.