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

San*_*hak 3 c null pointers

可能重复:在释放它们之后
真的应该设置指针NULL吗?

我使用malloc和calloc为指针分配了动态内存.使用此指针后,我应该释放内存,以便可以将块返回到OS(很好).现在我的问题是,在释放块之后,我为什么要这样做:

pointer = NULL;
Run Code Online (Sandbox Code Playgroud)

感谢帮助...

Pét*_*rök 8

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