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