gpt4 book ai didi

c - 我 free() 一个指向结构的指针,但它的属性仍然存在。这怎么可能?

转载 作者:行者123 更新时间:2023-11-30 17:25:16 25 4
gpt4 key购买 nike

这是一些示例代码,但它基本上显示了我的问题(我编写了这个自由风格而没有编译它,因此它可能有一些语法错误,但这只是关于想法)。

typedef struct Person {
char name[25];
}Person;


int main() {
Person *p = malloc(sizeof(Person));
strcpy(p->name,"Philip");
free(p);
printf("%s",p->name); /* prints Philip but why? */
return 0;
}

所以我为 p 分配空间,在我给它命名为“Philip”后,我释放了它。所以,根据我的理解,p->name 应该为 NULL。我是否错误地使用了免费?字符串“name”仍然保留在我的内存中,这不是“糟糕”吗?

最佳答案

So, in my understanding, p->name should be NULL

为什么应该它是NULLfree() 的文档是否说任何地方该函数将已释放缓冲区的底层内存清零?不,那问题是什么?

访问free()指针后面的内存是未定义的行为。不要这样做。如果你这样做了,不要对任何结果感到惊讶。

关于c - 我 free() 一个指向结构的指针,但它的属性仍然存在。这怎么可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27089479/

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