代码检视箴言
1 看见了If,就想Else。
2 看见malloc,就去找Free。
3 函数调用要小心,需要看看返回值。
4 看到for循环,就找边界值。
5 看见return要注意,要去前面找资源。
6 看见数组把神提,问题往往在下标。
7 不要小看字符串,长度是个大问题。
8 得到函数不要急,看看变量初始化,各种路径要小心。
9 赋值函数最危险,变量没有初始化。
九句箴言不孤立,相互结合显神威。
真言详解
1、看见了If,就想Else。
一看到if语句,就要想到else语句。如果没有else语句,就要分析是不需要,还是异常情况没有处理。
此外,多分支if 判断一定要有最后的else 语句,比如:
if(1 == ulflag)
{
printf("ulflag = 1\n");
}
else if (2 == ulflag)
{
printf("ulflag = 1\n");
}
else /* 多分支if语句必须要有这个else分支,哪怕这里面什么事情都不做 */
{
/* do nothing */;
}
2、看见malloc,就去找Free。
malloc出来的内存,操作系统是不会帮助我们回收的,所以就需要我们主动调用free函数来释放malloc出来的内存。
如果发现函数体里有调用malloc函数的地方,那么我们应该立即检查一下:(以下面的函数为例):
STATUS fun1(ULONG ulRamAddr, UCHAR* pucRam)
{
UCHAR *pcTemp;
pcTemp = (UCHAR*)malloc(100);
if (NULL == pcTemp) /* 判断内存申请是否成功 */
{
printf("fun1 errro: malloc failed!\n")
return ERROR;
}
.....
if ( ERROR == xxx ) /* 此为异常分支 */
{
free(pcTemp); /* 异常分支返回前也要释放前面申请的内存 */
return ERROR;
}
.....
free(pcTemp); /* 释放前面申请的内存 */