#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()とメモリ割り当てを使用するC
hello2
lineNumber is 0
なぜ、lineThatContainsWordが更新されたのですか?なぜlineNumberはなかったのですか?
私の割り当てを意味すると思います。しかし、変数を解放するだけで、指しているデータが解放されることがわかりました。データにアクセスした後にデータを公開すると、何の解放のポイントになりますか? – csDS
メモリの使用が終了したら解放して、メモリを他の目的に使用できるようにします。 – Barmar
プログラマーが決して構造体を解放しないことは非常に非実用的でしょうか?メモリの割り当てを非効率的にしてしまうでしょうか? – csDS