免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 17573 | 回复: 46
打印 上一主题 下一主题

free后,指针不为null? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-12 09:14 |只看该作者 |正序浏览
free后,指针不为null?

写了一段实验代码,试试free之后指针的情况,发现free后,使用printf()的“%p”打印地址,nullchar不为null,这是为什么?

___________________________________________________

#include <stdio.h>
#include <stdlib.h>     // for free()

int main (void)
{
    char *nullchar = NULL;

    nullchar = malloc (1); // 如果没有这行,下面打印都为nil,有这行后情况不同了,不明白原因?
    printf ("nullchar: %p\n", nullchar);

    free (nullchar); // 释放内存后,没有把地址指向NULL吗?
    printf ("nullchar: %p\n", nullchar); // 为什么不为nil?

    return 0;
}

论坛徽章:
0
47 [报告]
发表于 2011-01-30 14:57 |只看该作者
废话,free只是把指针指向的内存区域给释放了,指针本身并没有做任何的改动

论坛徽章:
0
46 [报告]
发表于 2011-01-20 21:40 |只看该作者
个人觉得 free(p) 后执行 p = NULL 完全是多余。

1、在你的程序执行的整个流程中,你该相当清楚指针何时 ...
langue 发表于 2009-10-12 11:14



吾赞同。
在功力够高深的情况下,是不需要判空和置空的,因为写代码的人脑子思路很清楚,根本不会出现该不为空的时候为空的情况,也不会出现引用野指针的情况。

论坛徽章:
0
45 [报告]
发表于 2010-11-17 21:52 |只看该作者
嗯。

free之后要显示置为NULL。

论坛徽章:
0
44 [报告]
发表于 2010-11-17 14:39 |只看该作者
嗯。所以说水是有源的,树是有根的。人家置空是有原因的。不要迷信的看别人的源都置空。就一定要置空!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
43 [报告]
发表于 2010-11-17 14:19 |只看该作者
呵呵。以前也不是不理性。只说了其一。没说其二。后来觉的只说其一不能真实代表我的想法。所以说了 ...
zhangsuozhu 发表于 2010-11-17 14:11

我是说相比一律 p=NULL 的情况,回归理性了。

很多 p=NULL 的支持者们坚定不移地认为,另一派的人是从来都不需要 p=NULL 的。

论坛徽章:
0
42 [报告]
发表于 2010-11-17 14:11 |只看该作者
回归理性了。
flw 发表于 2010-11-17 14:02



   呵呵。以前也不是不理性。只说了其一。没说其二。后来觉的只说其一不能真实代表我的想法。所以说了其二。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
41 [报告]
发表于 2010-11-17 14:02 |只看该作者
置不置空也分情况的。
比如:
statuc char *array = {NULL};
然后可能存在重多的array  = mailloc(xxxx) ...
zhangsuozhu 发表于 2010-11-16 13:42

回归理性了。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
40 [报告]
发表于 2010-11-17 14:01 |只看该作者
以前不知跟谁学的free后一定置NULL。

后来写了很长时间代码了。想了想。确实没有什么必要。

如果连指针目前什么状态都没搞清楚。逻辑流程都稀理糊涂。还何谈写出健状的代码呢?
zhangsuozhu 发表于 2010-11-16 09:57

重复一下让更多的人看看。

论坛徽章:
0
39 [报告]
发表于 2010-11-17 13:58 |只看该作者
设计成free(&p)就可以
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP