#include <stdio.h>
#include <stdlib.h>
#include <string.h>'
typedef struct NodeClass {
char lineThatContainsWord[100];
int lineNumber;
struct NodeClass *next;
} Node;
int main(void) {
Node *head;
head = malloc(sizeof(Node));
Node *tail = NULL;
head->next = tail; /* sets head equal to NULL */
strcpy(head->lineThatContainsWord,"hello");
head->lineNumber = 5;
free(head);
head->next = malloc(sizeof(Node));
head->next->next = NULL;
strcpy(head->next->lineThatContainsWord,"hello2");
head->next->lineNumber = 10;
tail = head->next;
free(tail);
printf(tail->lineThatContainsWord);
printf("\nlineNumber is %d",tail->lineNumber);
return 0;
}
나는 tail = head-> next를 설정하여 head-> next 노드의 값을 인쇄한다고 가정했습니다. 그러나 인쇄 된이LinkedList C에서 free() 및 메모리 할당 사용
hello2
lineNumber is 0
왜 lineThatContainsWord 만 업데이트 되었습니까? lineNumber가 왜 안되 었습니까?
내 할당을 의미 생각합니다. 그러나 자유 변수가 단순히 가리키는 데이터를 해제한다는 것을 읽었습니다. 데이터에 액세스 한 후 데이터를 공개하면 어떻게 해방 될 수 있습니까? – csDS
메모리 사용을 끝내면 다른 것을 사용할 수 있도록 메모리를 비우십시오. – Barmar
프로그래머가 절대 구조체를 해제하지 않으면 매우 실용적이지 않습니까? 그들의 메모리 할당을 비효율적으로 만들 것입니다, 맞습니까? – csDS