dポイントプレゼントキャンペーン実施中!

c言語についてです。大学で、全てのセルを削除するコード(下記)で間違いを指摘し、修正せよ、という課題が出たのですが、
どこが間違いかわかりません。
一応、 解放したスペースの内容(構造体のメンバ)を使用してはいけない、というヒントが与えられています。
どなたか教えていただけるとありがたいです。
#include <stdio.h>
#include <stdlib.h>
#include "mleak.h"
#define malloc mleak_malloc
#define free mleak_free
/* 連結リストのセルを表すための構造体の宣言 */
struct cell {
int data;
struct cell *next;
};
int main(void)
{
struct cell *head = NULL; /* 最初は空のリスト */
struct cell *p;
atexit(mleak_finalize);
head = add_first(head, 11);
head = add_first(head, 22);
head = add_first(head, 33);
head = add_first(head, 44);
for (p = head; p != NULL; p = p->next)
printf("%d\n", p->data);
for (p = head; p != NULL; p = p->next) /* 間違い */
free(p);
return 0;
}

A 回答 (2件)

No.1:追記



課題の回答には直接は答えられません。

≫≫ for (p = head; p != NULL; p = p->next)
≫≫ free(p);→→→→→→→→→→→→↑
    • good
    • 5
この回答へのお礼

なんでですか?w

お礼日時:2021/05/12 19:25

≫≫ for (p = head; p != NULL; p = p->next) /* 間違い */


≫≫ free(p);

≫≫ 解放したスペースの内容(構造体のメンバ)を使用してはいけない

つまり「解放したスペースの内容を使用」しているという指摘だと思います。
    • good
    • 1
この回答へのお礼

どのように修正すればいいでしょうか?

お礼日時:2021/05/12 19:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!