* 강력한 텍스트 C는 다음과 같은 기능의 도움으로 경도라고에 나는 연결리스트를 만들어 * : 나는 번호 목록을 작성합니다 아이콘와 목록을 증가 다음 C에서 간단한 연결 목록의 메모리를 해제하는 2 가지 방법은 무엇입니까?
struct ilist_node {
struct ilist_node * rest;
int first;
};
typedef struct ilist_node *ilist;
ilist icons(int in, ilist il) {
ilist r = malloc(sizeof(struct ilist_node));
r->first = in;
r->rest = il;
}
그 후 목록의 각 요소를 인쇄하고 목록에 사용 된 메모리를 해제하려고 시도했습니다.
while (lon!= NULL) {
ilist tmp = lon->rest;
printf(" %d\n",lon->first);
free(lon);
lon = tmp;
}
위의 기능이 작동합니다. (나는 추억을 여는 방법을 봤어.이게 인기있는 대답 인 것 같다.) 그러나 호기심에서 나는 또 다른 것을 시도했다 :
ilist tmp = lon;
while (lon != NUll) {
printf(" %d\n",lon->first);
lon = lon->rest;
}
idelete(tmp);
그리고 그것은 또한 작동한다. 그래서 나는 조금 혼란스러워. 마지막 노드가 작동하면 목록을 통해 모든 노드를 비울 필요가있는 이유는 무엇입니까?
목록을 반복 재생하거나 해당 공간을 비우겠습니까? 만약 ideelte가 정말로 우리가 비교할 필요가 있다고 가정한다면, idelete의 출처도 올려주세요. – gbulmer
ahhh 감사합니다. 그게 내 임명 idelete 대신 내장 된 대신 내 교수에 의해 주어진 사용하기 때문에 옙. 어리석은 실수 – x7qiu
자주 묻는 질문에 도움이됩니다. -) – gbulmer