gpt4 book ai didi

c - 为什么只有一个 free() 适用于这段代码?

转载 作者:行者123 更新时间:2023-12-02 07:18:01 24 4
gpt4 key购买 nike

我用free()释放了我之前分配的结构,我想测试它们是否释放成功,但我只释放了其中一个,为什么?

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct student{
char *name;
struct student *next;
}student;
int main(int argc, const char * argv[]) {
student *a=malloc(sizeof(student));
a->name="echo";
student *b=malloc(sizeof(student));
b->name="harry";
a->next=b;
b->next=NULL;
free(a);
free(b);
printf("%s\n", a->name);
printf("%s\n", b->name);
return 0;
}

我得到了这个输出。为什么?

(null)
harry
Program ended with exit code: 0

最佳答案

您不能“测试”它们是否已成功释放,尝试访问任何已释放的内存是未定义的行为,而不是测试只是接受并继续。

关于c - 为什么只有一个 free() 适用于这段代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55783976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com