c语言安全编码建议一

 

在编程一个良好的习惯可以帮你避免很多潜在的bug,是你的程序更加的健壮。很多的问题都是伴随一些平时不注意的细节。

一下是在C语言编写代码中应该注意的事项。

  1. 用const限定不可修改的变量
  2. 不要在子作用域中复用变量
  3. .不要使用区别不明显的标识符。(数字1与小写字符l,数字0与小写字符o,数字2与自负z等)
  4. 不要在一个生命中声明超过一个变量;(char  *p, c;容易将c也看成指针型的变量)
  5. 将不会被函数修改的指针参数声明为const;(避免在函数中改变不可改变的值)
  6. 把不需要外部链接的对象声明为static;(避免不同代码文件中的函数重名)
  7. 不要将指针的长度确定所指向类型的长度;(char  *p; sizeof(p)的值为4而不是1)
  8. 不要认为结构体的长度等于它各个成员的长度之和;(struct buffer{ int i; char b[50];}buffer; sizeof (buffer) = 56, sizeof (buffer.i) + sizeof(buffer.b) = 54)
  9. 不要在结构体之间执行逐字节比较;(因为字节对齐)
  10. sizeof操作数不应该包含副作用,sizeof操作数最好为数据类型。(sizeof(a++)一般都是错的)
  11. 确保正确的使用指针运算符;
  12. 不使用sizeof确定类型或变量的长度;
  13. 不要依赖符号的优先级顺序做运算,使用小括号明确执行顺序;(避免因为自己的记错误的优先级,影响结果)
  14. 不要忽略函数的返回值;(避免因为系统的资源紧缺造成的函数执行失败)
  15. 不要应用未初始化的变量或内存;(避免随机数对自己程序结果的影响)
  16. 保证枚举常量映射到唯一的值;(enmu b { red = 4, orange, yellow, indigo = 5};这样造成了orange与indigo的值是一样,编程时要注意)
  17. 求余操作的结果并不只有负值。
  18. 把整数化为指针,把指针转化为整数要小心,注意结果的有效性。
  19. 对无符号数使用位操作,对有符号使用位操作要注意符号位。
  20. 保证整型转换不会丢失或错误解释数据。(数组索引、指针运算、数据边界等)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值