关于简单的指针判空

 

作为一名C/C++程序员,指针是最容易导致程序出错原因之一,而指针问题引起的后果又常常是down机。指针造成down机通常是由于指针在使用之前没有进行NULL的判断,或是出现野指针了,引用了不可使用的地址。

对于野指针,常常是由于程序员操作复杂的数据结构,或是复杂的逻辑的,对指针进行了错误的赋值。

而空指针,就只是需要简单的进行NULL判断就可以避免引起down机。虽然是简单的判断,可是在项目中,由于种种原因忘记判断的例子举不胜举。一但代码量比较大,赶进度,或是逻辑比较复杂,比如pointer->child->child这种要引用多级的指针时,一个不小心就会忘记判断NULL,而造成down机。特别是出现“理论上”不可能是空指针的指针,程序在长时间地运行中,“理论上”的不可能也有可能变成可能,于是就down机了。所以,“只要是指针就要判断NULL”,这句话是每个C/C++程序绝对要遵守的准则之一。

虽然,总是在强调指针判断NULL,但又总会出现这个问题,周六晚上,我的代码就出现了空指针没有判断的错误,这段代码还是去年十二月份提交的代码,造成了7000多个玩家掉线,当时正要进行一次拉人活动,造成了不小的损失。结果老总大怒,好再老大帮我说了好话,不然就不只是罚一百块钱了。今天检查了下代码,大家提交的代码里多多少少有一些指针没有判断NULL,基本上都是“理论上”不可能为空的指针,但毕竟是“理论上”的。

那么如何让空指针问题远离我们的程序呢?在我看来有以下几点:

第一,要养成对指针判空的好习惯,每次要使用指针之前都进行NULL的判断,特别是pointer->child->child这种多级的指针,最好是分行写成:

这样写出现很清楚,又不容易漏判空,

第二,写代码时要专心,一心一意,可能有些程序员在做比较简单的功能时,感觉时间比较充裕,就一边和朋友聊天,或是一边打游戏一边写程序,这种习惯非常不好,因为想着其它事情写程序时,常常由于经历不集中而造成低级错误,指针没有判空就是这种低级错误的典型代表。

第三,困的时候不要写代码,困的时候眼睛都睁不开,更不要提写代码了。

第四,代码的检查,在代码提交前,一定要检查代码,不能太相信自己,你可以把svn diff的结果定向到一个文件中,在这个文件中认真地查一下指针,特别是带“->”的地方,看看提交的代码中有没有指针没有判空的地方,这点是很有效的,可能你一千行的代码,用这种方法只需要十多分钟就可以检查你的指针有没有判空,多花十几分钟来提高你代码的健壮性,何乐而不为?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值