연결리스트
, 12 qwerasrf님이 작성노드를 추가하고 마지막에 메모리 해제할때 head 노드를 따로 해제하지않고
struct NODE *curr = head;
while(curr != NULL)
{
struct NODE *next = curr->next;
free(curr);
curr = next;
}
이런식으로 head 노드까지 한번에 해제해도되나요??
Re: 연결리스트
, 도장_ 관리자님이 작성연결 리스트의 head를 따로 해제하지 않고 구현하는 방법도 가능합니다.
구현 방식의 목적에 따라 다를 것입니다.
전역 변수에 연결 리스트의 head를 선언하고, 프로그램이 실행되는 순간부터 종료될 때까지 전역 변수로 연결 리스트의 head를 유지하는 프로그램이 있습니다. 대표적으로 리눅스 같은 운영체제가 이렇게 구현합니다. 운영체제는 4k 단위로 나눈 메모리 페이지를 연결 리스트로 관리합니다.
만일 함수 안에서 연결 리스트의 head를 만들고 해제하지 않는다면 함수가 완료된 이후에 head에 접근할 방법이 사라지므로 메모리 누수를 만들게 됩니다. 따라서 목적에 따라 잘 설계하여 사용하면 됩니다.