可能重复:
释放后将变量设置为 NULL …
我正在学习良好的 C 编程实践,我的朋友告诉我在 free() 之后总是将指针设置为 NULL(或调用特定的释放函数)。
例如:
char* ptr = malloc(100);
...
free(ptr);
ptr = NULL;
或者
struct graph* graph = create_graph();
...
destroy_graph(graph);
graph = NULL;
为什么这是一个好习惯?
更新:阅读答案后,对我来说这似乎是一种糟糕的做法!我隐藏了可能的 double-free() 错误。这怎么可能是一个好习惯?我很震惊。
谢谢,博达赛多。