free()函数的理解
free的实现原理:
操作系统在调⽤malloc函数时,会默认在malloc分配的物理内存前⾯分配⼀个数据结构,这个数据结构记录了这次分配内存的⼤⼩,在⽤户眼中这个操作是透明的。
那么当⽤户需要free时,free函数会把指针退回到这个结构体中,到该内存的⼤⼩,这样就可以正确的释放内存了。molloc函数
通过这种内存分配机制,可以解释很多c语⾔中的迷惑问题:
1)⽤户已经free了⼀段内存,为什么还可以调⽤该指针,并且编译器不报错?
因为,free函数的作⽤只是告诉操作系统该内存不⽤了,可以收回,操作系统就把该内存链接到链接表上,
但是这段内存⽤户还是可以访问到的,只是该内存的值可能已经发⽣了变化,这种情况也叫作野指针。
解决办法就是,在free后,把该指针指向NULL。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论