代码安全,网络安全,系统内核

Code Complete 2 第十三章 不常见的数据类型

1. 使用结构体的场合

用结构体明确数据关系
用结构体简化参数列表 (Windows 内核用的很多)
用结构体减小维护量

2. 指针

更正指针的大部分工作量便是找出它的位置。经常的错误是指针指向的位置不可读或者不可写,却进行了读或者写的操作。double free 或者null 指针问题。而指针指向的内容被破坏,这种错误却很难发现。

一些额外的技术可以避免一些问题:

a 同时声明和定义指针
b 在与指针分配相同的作用域中删除指针 (calloc free , new delete)
c 在使用指针和指针所引用的变量前先检查它 (防御式编程)
d 使用额外的指针变量提高代码的清晰度
e 按照顺序释放链表指针
f 在删除或者释放指针之后将它们设置为空值 (NULL)
g 使用非指针技术

Code Complete 2 第十一章 基本数据类型

1. 避免使用magic num 如: 11 ,多使用具名常量,优势在于便于理解,减小后期维护量
2. 注意编译器警告 有一种方法是将编译器的警告级别调为最大
3. 考虑变量范围避免整形溢出的问题,对浮点类型的计算要小心,结果往往和你想象的不一样
4. C style 的字符串长度什么名为CONSTANT+1
char name[ NAME_LENGTH+1 ] = {0};
5. 动态分配内存使用 calloc而不是 malloc,calloc 会初始化为0
6. 使用strncpy 等函数代替 strcpy 等函数,防止缓冲区溢出
7. 将枚举类型的第一个元素留作非法值,很多编译器将枚举类型的第一个值为0
8. 考虑使用一个类而不是使用typedef

返回顶部