使用strlen函数之前没有检查空指针导致的死机

来源:互联网 发布:券商风险管理 知乎 编辑:程序博客网 时间:2024/04/28 02:42

今天一个问题浪费了很多时间。
原因就是为了计算一个char *p 的长度。判断长度大于0就表示里面有数据,否则就认为是没有数据。
可是程序运行后,发现没有数据的时候会死机。
按照原先的设想,即使buffer里面都是0,函数最多返回0长度而已,并不应该导致死机啊。后来仔细分析,才发现获取p的API会先做判断,当buffer里面没有数据时,返回NULL,而不是原先的buffer地址。
而由于标准库里面的strlen并没有对传人的指针做检查,而直接访问指针的内容,这样就会导致异常发生。

原创粉丝点击