当前位置:  开发笔记 > 编程语言 > 正文

两次指针自由调用

如何解决《两次指针自由调用》经验,为你挑选了1个好方法。

我在讲座中被教过,free()两次拨打指针真是非常糟糕.我知道NULL在释放它之后立即设置指针是一种很好的做法.

但是,我仍然没有听到任何解释为什么会这样.根据我的理解,方式malloc()有效,它应该在技术上跟踪它已经分配的指针并让你使用.那么为什么它不知道它接收到的指针是否free()已被释放?

当你打电话free()给以前已经被释放的位置时,我很乐意理解,内部会发生什么.



1> enrico.bacis..:

当你使用时,malloc你告诉PC你想要在堆上保留一些内存位置.计算机返回指向寻址空间的第一个字节的指针.

当您使用时,free您实际上正在告诉计算机您不再需要该空间,因此它将该空间标记为可用于其他数据.

指针仍然指向该内存地址.此时,另一个malloc调用可以返回堆中的相同空间.当您free第二次调用时,您不会释放以前的数据,而是释放新数据,这可能不适合您的程序;)

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有