c - 为什么我们要在通过 free() 释放内存后使指针无效?

标签 c pointers null

<分区>

Possible Duplicate:
Should one really set pointers to NULL after freeing them?

我已经使用 malloc 和 calloc 将动态内存分配给指针。使用此指针后,我应该释放内存,以便该 block 可以返回给操作系统(没问题)。现在我的问题是,在释放 block 之后,我为什么要这样做:

pointer = NULL;

感谢帮助...

最佳答案

这样我们就不会留下悬挂指针。如果不清空未使用的指针,您将无法在以后检测是否可以安全地取消引用或释放指针。并且尝试取消引用或释放悬挂指针会导致未定义的行为(= 崩溃)。

关于c - 为什么我们要在通过 free() 释放内存后使指针无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4861656/

相关文章:

c - C 结构编程

c++ - 将 libpcap 数据包数据从 const u_char* 复制到另一个 const u_char*

c - 复制结构中包含的字符串指针时出现问题

c++ - c++ std::list::front() 返回一个空列表是什么?

python - 使用 inplace OR 简化空检查

pointers - 检查指针是否指向 Nil Slice

C删除数组元素,程序停止

c - C 语言编程,Stephen Kochan,第 11 章,练习 2

c - 无效的 UTF-8 字符串

c - 如何在C中的while循环中存储数组索引的值