malloc()和free()注意点

1.调用free()释放内存后,不能再去访问被释放的内存空间。该段内存被释放后,很有可能该指针仍然指向该内存单元,但这块内存已经不属于原来的应用程序,此时的指针为悬挂指针(可以赋为NULL),有些时候,为安全起见,将再次置该指针为空。
free(pt);
pt = NULL;

2.不能两次释放相同的指针(NULL的除外,无论对NULL指针free()多少次都不会出问题)。也不能用free()来释放非malloc(),calloc()和realloc()函数创建的指针空间。

3.在进行C语言程序开发中,malloc和free是配套使用的,即不需要的内存空间都需要释放回收。

4.在本人学习过程中发现一个问题:
如果使用:int * array = (int *)malloc(10 * sizeof(int));
for (count=0; count<10; count++)
{
*array = count;
array++;
}
然后: free(array);
会报错。但当把指针重置为首地址时,再free(array)-->成功!
这是不是表示,向free()函数传递的参数是不是必须是段内存的首地址?答案:是的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值