sc3289   2년 전

윤성우 저자 자료구조 책을 공부하면서 그래프를 보고 있는데

처음 그래프를 구현할 때 이제 vertex들을 위한 node 배열 동적메모리 할당을 해주고

edge 들을 표현하면서 이제 vertex마다 node들을 이어붙이는게 그래프를 구현하는거라고 이해했습니다.

vertex에 node들 이어붙이는 과정에서도 동적메모리 할당을 이용하는데

어째서 프로그램 종료 전 메모리 할당을 vertex에 한해서만 풀어주는건지 잘 모르겠습니다.  (77번째 줄 free(g);)

edge들을 표현할때도 동적메모리를 할당했으니 각 vertex 배열 index마다 edge들까지도 메모리 할당을 풀어줘야 하는거 아닌가요?

bupjae   2년 전

그래프를 만들 때 insert_edge 에서 각각의 edge 마다 동적 할당을 하고 있으므로

그래프를 해제할 때에도 각각의 edge 마다 동적 할당 해제를 해야 합니다.

77번째 줄과 같이 그래프 본체만 free 하면, edge 가 할당받은 메모리는 (프로그램을 종료하기 전에는) 아무도 사용할 수 없습니다.

   

이 프로그램은 free 를 하자마자 프로그램이 종료되며, 종료된 프로그램이 사용했던 메모리는 OS 가 모두 청소를 하기 때문에 문제점이 눈에 보이지 않을 뿐입니다.

sc3289   2년 전

역시.. free를 각 edge들도 해줘야 하는군요 감사합니다!

교재에서도 저러니 뭔가 싶었습니다..

댓글을 작성하려면 로그인해야 합니다.