免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: shinwu_chen
打印 上一主题 下一主题

[C] 请教free函数的作用 [复制链接]

论坛徽章:
2
技术图书徽章
日期:2013-09-28 17:43:46金牛座
日期:2013-09-28 18:39:14
11 [报告]
发表于 2013-09-29 14:04 |只看该作者
回复 8# linux_c_py_php


    恩,我现在就是正在学C基础。你说的这个我明白,free的参数,最后还是原来的指针地址current,可是next是原来这个current指向的内存块中的指针,这个内存块都被释放了,next还是可以取到值,他不跟随内存块被一起释放掉么?

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
12 [报告]
发表于 2013-09-29 14:04 |只看该作者
本帖最后由 w_anthony 于 2013-09-29 14:06 编辑

free(void*),执行后current的值并不会改变,但是继续访问其内容的行为是“未定义”的,书上这段代码不应该出现在任何实际应用的工程中,即使它能很好的工作,因为你不能保证换个编译器去编译它得到的程序没有问题,也不能保证即使现在看起来没有问题那以后也一定不会有问题,这就是“未定义”的含义,必须要避免。

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
13 [报告]
发表于 2013-09-29 14:10 |只看该作者
回复 9# shinwu_chen


    访问一个已经free了的指针就是访问野指针,请看http://bbs.chinaunix.net/forum.p ... ;page=1#pid23962402

论坛徽章:
2
技术图书徽章
日期:2013-09-28 17:43:46金牛座
日期:2013-09-28 18:39:14
14 [报告]
发表于 2013-09-29 14:23 |只看该作者
回复 13# w_anthony


    恩呢,明白了,谢谢啊~

论坛徽章:
2
技术图书徽章
日期:2013-09-28 17:43:46金牛座
日期:2013-09-28 18:39:14
15 [报告]
发表于 2013-09-29 14:24 |只看该作者
感谢大家耐心回答啊~C新人,以后还请大家多多指教!

论坛徽章:
0
16 [报告]
发表于 2013-10-05 09:48 |只看该作者
free()的作用是释放指针指向的内存空间,而指针的值不为NULL,指针仍然指向那块内存空间。但是这样引用是很危险的,因为那里是一块乱码。
这样应该可以
struct film *p
while(current)
{
   p=current;
   current=current->next;
  free(p);
}

论坛徽章:
0
17 [报告]
发表于 2013-10-05 09:50 |只看该作者
回复 4# shinwu_chen


    不行,这样做很危险。。。

论坛徽章:
0
18 [报告]
发表于 2013-10-05 10:50 |只看该作者
有时候刚释放的内存不会马上被修改的
这又是某本国内“教授”写的评职称用教材吗?

论坛徽章:
0
19 [报告]
发表于 2013-10-08 17:21 |只看该作者
哈哈,你也发现这本书的BUG了

论坛徽章:
0
20 [报告]
发表于 2013-10-08 20:17 |只看该作者
不可思议,粗看还以为是c++ primer。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP