(原创)malloc与free的小细节

本文详细解释了C语言中malloc和free函数的作用。malloc用于在堆区分配内存,而free则将内存块返回给堆区,供其他程序使用。在使用free后,应将指针设置为NULL以避免潜在的访问错误。

                                                     malloc与free

       如果你使用malloc来分配空间给某一变量,那你一定知道malloc是在内存的堆区分配内存给该变量。堆区的空间相对于栈区等的空间要大的多,并且它是程序员可以自由使用并且一定要由程序员自己释放掉之前分配的但又无用的空间的区域。malloc 分配的空间就在这里,所有以在malloc后一定要有free与之对应。若你只是写了一个很简单的小程序,准备测试freei掉malloc的空间后的输出free变量的结果,你会发现居然不是空???是不是自己弄错勒(除非你释放的变量弄错了)?其实 不然,当你free变量的时候,只是将你那块独享的空间又“放回”原来的内存空闲列表中,当有其他程序申请堆空间的时候,这块你释放掉的空间又可以被申请使用了。所以,在你free的时候,下面要添加一条语句,valuename = NULL;后你再去试试结果吧。

(转:

下面讲一下malloc()free()到底干了什么?

malloc()之后这片内存就是你的了,你就拥有使用权。

free()只是将你之前申请的内存块插入到heap中,并检测是否与heap中已有的内存块相邻,如若相邻,则合并这两块,至于你自己定义的指针,仍保持原值。但已经没有了空间,需要你自己手动将其指向NULL

free并没有把内存里的值清零,内存里的值仍保持原样,free之后仍然可以通过你的

指针去访问内存,如果这片内存没有被操作系统挪做他用,那你访问到的还是原来得值,当然,你这样做很危险,尤其是在多线程环境下,你根本不知到这片内存是否被操作系统挪做他用了。

)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值