700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > c语言使用free释放指针报错 C语言中的free函数用法执行机制分析

c语言使用free释放指针报错 C语言中的free函数用法执行机制分析

时间:2022-05-22 20:35:07

相关推荐

c语言使用free释放指针报错 C语言中的free函数用法执行机制分析

free函数是C语言或者C++程序语言的常用函数,那么free函数有什么用途呢?free函数又怎么用呢?C语言中的free函数用法执行机制分析,一起来看看free内部的机制以及和delete的对比分析。

与malloc()函数配对使用,释放malloc函数申请的动态内存。另外需要注意的是,对于free(p)这句语句,如果p是NULL指针,那么free对p无论操作多少次都不会出问题。如果p不是NULL指针,那么free对p连续操作两次就会导致程序运行错误。

free是C语言释放内存的函数,与malloc配套使用。free也是作为delete操作符的基础。free和malloc都是具备回滚机制的。也就是说,new和delete操作也是有回滚机制的,要么全部成功要么一个也不成功,不存在中间状态。

delete中提到过,如果指针为空,不管对指针释放多少次都没有问题。同样,free也是执行这样的。但是,如果一个非空指针,释放一次内存成功后,即表示指向的内存已经回收。此时就不能再调用free或者delete释放了,这会导致多次释放内存,出现错误。在释放完内存后,应该将指针清空或者指向其他有效的位置,避免错误。而指针为空的多次释放没有问题是因为内部执行的指针是否为空的检测,如果为空直接返回,因此没有副作用。

释放内存相比于分配内存来说容易的多。因为不存在内存不足的问题。正常释放内存不会出错,除非释放一个已经释放的内存。内存释放后,其他程序就可以占用了这块内存,自然那块内存也被保护起来了。你去释放它也就会触发系统的内存保护,自然就发生内存操作违规。有时候内存并没有被占用,也可能不会报错,这就看使用的编译器是否检测。一般的编译器都是可以检测得到的。内存访问错误非常常见,最好养成一个好习惯,今后也就免除很多Bug。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。