gpt4 book ai didi

c - free() 无法与 struct 一起正常工作

转载 作者:行者123 更新时间:2023-11-30 21:40:45 27 4
gpt4 key购买 nike

调用 free() 后,为我的结构分配的内存应该被释放。那么为什么我的代码仍然打印 l->val ?为什么尝试打印 l->key 时失败?

#include <stdio.h>

typedef struct Node {
char *key;
char *val;
} Node;

int main(void) {
Node *l=malloc(sizeof(Node));
l->key="foo";
l->val="bar";
free(l);
printf("%s\n", l->val);
//printf("%s\n", l->key); /* this gives an error */
return 0;
}

最佳答案

释放指针后将其设置为 NULL 始终是一个好习惯。由于您正在访问的内存仍然完好无损,因此您可以看到 l->val 的正确值。

Node *l=malloc(sizeof(Node));
l->key="foo";
l->val="bar";
free(l);
l = NULL;

关于c - free() 无法与 struct 一起正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26716721/

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