免费注册 查看新帖 |

Chinaunix

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

[C] 去腾讯面试碰到个题目,求助一下 [复制链接]

论坛徽章:
0
101 [报告]
发表于 2009-12-03 09:46 |只看该作者
没置空直接退出进程,有个咩错啊~
牛角尖题目

论坛徽章:
0
102 [报告]
发表于 2009-12-03 09:48 |只看该作者
malloc用的不对,也没有判断内存空间是否申请成功

[ 本帖最后由 sen2615 于 2009-12-3 09:58 编辑 ]

论坛徽章:
0
103 [报告]
发表于 2009-12-03 09:48 |只看该作者
to 99楼:
这里确实是野指针,不过都是main函数最后面了,NULL不NULL都无所谓了,所以说这道题没什么致命错误,只是不规范而已。

论坛徽章:
0
104 [报告]
发表于 2009-12-03 09:50 |只看该作者
考题写成这样,二级题~

论坛徽章:
0
105 [报告]
发表于 2009-12-03 09:59 |只看该作者
回103楼

是的,就这道题来说,最后置不置空无所谓,因为free完就退出了。
我想他们想要考的应该就是这种写法的严谨性,如果这个段写法出现在一个大程序的中间部分, 而在它之后又用到了p指针,就很有可能出现问题, 我认为他应该就是考写程序的严谨性。

论坛徽章:
0
106 [报告]
发表于 2009-12-03 10:13 |只看该作者
疯了,还在讨论……

main 没有返回 int 被无视了。

论坛徽章:
0
107 [报告]
发表于 2009-12-03 10:22 |只看该作者
这种题目不规范得很彻底。
我觉得大部分人写C/C++,都不会/不应该把指针搞得满天飞。
与其去追求这种所谓严谨性,不如审查下为啥这个该死的被释放的指针为啥再次被使用。
即使置空,再次使用不还是错~
野指针根本不是因为没置空造成。一块内存,如果被多个指针引用,置空一个指针,另一处还在使用,才是造成灾难的原因缩在。解决野指针,应该从整体结构出发。

论坛徽章:
0
108 [报告]
发表于 2009-12-03 11:38 |只看该作者
原帖由 funcman 于 2009-12-3 10:22 发表
这种题目不规范得很彻底。
我觉得大部分人写C/C++,都不会/不应该把指针搞得满天飞。
与其去追求这种所谓严谨性,不如审查下为啥这个该死的被释放的指针为啥再次被使用。
即使置空,再次使用不还是错~
野指 ...


说的太好了

论坛徽章:
0
109 [报告]
发表于 2009-12-03 11:47 |只看该作者
char *getMem()
{
    char *p;
    p = malloc(100);
    return p;
}
猛一看没问题,实际上 p是个栈值,getMem返回之后p就没了,代码运行没问题,不代表写的就对!

论坛徽章:
0
110 [报告]
发表于 2009-12-03 12:17 |只看该作者
109 楼正解。
林锐 写的那本书里面就提过的了。
论坛手册里面有,大家可以看看的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP