免费注册 查看新帖 |

Chinaunix

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

如何有效的避免指针在释放之后被引用? [复制链接]

论坛徽章:
0
81 [报告]
发表于 2008-11-11 23:17 |只看该作者
原帖由 flw 于 2008-11-7 13:45 发表
从某种程度上讲,那种所谓的 1 == a 和 free(p); p=NULL; 还有 memset(buf,0x00,sizeof(buf)); strcpy(buf,str); 等预防 BUG 的技巧恰恰是在阻碍程序员的成长。

写程序一定要注意语义,语义清晰,错误就会少 ...

太同意flw这段话了。现在看见那些混乱不堪的代码就有气。认真些,那些隐藏bug的小技巧少用点。特别是memset,用多了真是受不了。
最近发现,好的程序,设计上都很清晰很简单,整个架构要有美感。那些实现起来很别扭的东西多半是设计不合理的结果。

论坛徽章:
0
82 [报告]
发表于 2008-11-11 23:24 |只看该作者
原帖由 retuor 于 2008-11-9 20:32 发表


我以为他写的是


buf[strlen(buf)]='\0'.


这可比他那句强多了。

这种写法也不太好。strlen也要降低程序的效率,有时候是不可接受的。
大家写C主要就是图效率,降低效率的东西最好还是少用。有时候注意一下这些方面,效率提高一倍都可能。

论坛徽章:
0
83 [报告]
发表于 2008-11-12 09:14 |只看该作者
原帖由 flw 于 2008-11-9 20:33 发表

原帖由 retuor 于 2008-11-9 20:32 发表


我以为他写的是


buf[strlen(buf)]='\0'.


这可比他那句强多了。  


寒一个……

strlen本身就是靠查找'\0'的位置工作的,这句究竟是想干什么?

论坛徽章:
0
84 [报告]
发表于 2008-11-12 09:15 |只看该作者
找到'\0',再覆写一次'\0',然后心里就踏实多了?

难道这就是传说中的鸵鸟政策?

[ 本帖最后由 狗蛋 于 2008-11-12 09:18 编辑 ]

论坛徽章:
0
85 [报告]
发表于 2008-11-12 09:46 |只看该作者
原帖由 狗蛋 于 2008-11-12 09:15 发表
找到'\0',再覆写一次'\0',然后心里就踏实多了?

难道这就是传说中的鸵鸟政策?


所以说最好是用strncpy,不过我从来不用c的库

论坛徽章:
0
86 [报告]
发表于 2008-11-12 22:24 |只看该作者
:wink:

[ 本帖最后由 chzht001 于 2008-11-12 22:26 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
87 [报告]
发表于 2008-11-12 22:40 |只看该作者
原帖由 chzht001 于 2008-11-12 22:24 发表
:wink:

比方打得不贴切吧?

论坛徽章:
0
88 [报告]
发表于 2008-11-12 23:05 |只看该作者
原帖由 xie995 于 2008-11-11 23:24 发表

这种写法也不太好。strlen也要降低程序的效率,有时候是不可接受的。
大家写C主要就是图效率,降低效率的东西最好还是少用。有时候注意一下这些方面,效率提高一倍都可能。


我写代码从不把效率放在第一位,特别是所谓的优化技巧,花相当大的代价,换来的只是很小的性能提升,而且严重降低程序的可读性

只有程序性能核心部位或者性能瓶颈所在的地方,才需要特别关注效率

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
89 [报告]
发表于 2008-11-12 23:09 |只看该作者
原帖由 雨过白鹭洲 于 2008-11-12 23:05 发表


我写代码从不把效率放在第一位,特别是所谓的优化技巧,花相当大的代价,换来的只是很小的性能提升,而且严重降低程序的可读性

只有程序性能核心部位或者性能瓶颈所在的地方,才需要特别关注效率

严重同意!
非常赞同雨过白鹭洲的见解。

论坛徽章:
0
90 [报告]
发表于 2008-11-12 23:22 |只看该作者
我有一个办法,写程序的时候,桌子上放一些小细绳,把左手的手指分别定义成锁、互斥量、堆空间...
加锁、锁互斥量、分配堆的时候,在口曲纸上写上变量名,用绳子系在相应的手指上,解锁、解锁互斥量、释放堆的时候,把它取下来,使用上述变量的时候看看左手...

JOKING~!

我觉得最好还是控制一下代码规模、模块封装要严密、程序的语义务必清晰,控制一个功能单位的代码行数不要超过2个屏幕(适当增加函数,函数也是天然的封装。效率?那是Intel的事),BUG自然就少了。代码一长,神仙也保不齐不出错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP