C语言 我 free() 一个指向结构的指针,但它的属性仍然存在.这怎么可能



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

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 分配空间,在我给它起名字"菲利普"之后,我释放了它。所以,在我的理解中,p->name应该是NULL。我是否错误地使用免费?字符串"名称"仍然留在我的内存中不是"不好"吗?

所以,在我的理解中,p->name应该是NULL

为什么要NULLfree()的文档是否在任何地方说此函数将释放缓冲区的基础内存清零?不。那么问题是什么呢?

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

相关内容

  • 没有找到相关文章

最新更新