在课堂free()
上告诉我,两次调用指针确实非常糟糕。我知道这是一个好习惯,NULL
在释放指针后立即将指针设置为。
但是,我至今仍未听到任何关于其原因的解释。据我了解,这种方式malloc()
可行,从技术上讲,它应该跟踪已分配并给您使用的指针。那么,为什么不知道通过它接收的指针是否free()
已经释放呢?
我想了解一下,当您呼叫free()
以前已经释放的位置时,内部会发生什么。
使用时,malloc
您会告诉PC您要为堆保留一些内存位置。计算机返回一个指针,指向已寻址空间的第一个字节。
使用free
时,实际上是在告诉计算机您不再需要该空间,因此它将该空间标记为可用于其他数据。
指针仍然指向该内存地址。此时,另一个malloc
调用可以返回堆中的相同空间。当您free
再次调用时,您不是在释放以前的数据,而是释放新的数据,这可能对您的程序不利;)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句