aihot  2017-05-09 20:01:57  OpenCV |   查看评论   

 常见C/C++编码规范(5)

2.4. 正确性、效率 
<规则1> 严禁使用未经初始化的变量。 
引用未经初始化的变量可能会产生不可预知的后果,特别是引用未经初始化的指针经常会导致系统崩溃,需特别注意。声明变量的同时初始化,除了能防止引用未经初始化的变量外,还可能生成更高效的机器。 

<规则2> 定义公共指针的同时对其初始化。 
这样便于指针的合法性检查,防止应用未经初始化的指针。建议对局部指针也在定义的同时初始化,形成习惯。 

<规则3> 较大的局部变量(2K以上)应声明成静态类型(static),避免占用太多的堆栈空间。 
避免发生堆栈溢出,出现不可预知的软件故障。 

<规则4> 防止内存操作越界。 
说明:内存操作主要是指对数组、指针、内存地址等的操作。内存操作越界是软件系统主要错误之一,后果往往非常严重,所以当我们进行这些操作时一定要仔细小心。 

A.数组越界。 
char aMyArray[10]; 
for( i = 0; i <= 10; i++ ) 

aMyArray[i] = 0; //当i等于10时,将发生越界。 


B.指针操作越界。 
char aMyArray[10]; 
char *pMyArray; 

pMyArray = aMyArray; 
--pMyArray; // 越界 

pMyArray = aMyArray; 
pMyArray += 10; // 越界 

<规则5> 减少没必要的指针使用,特别是较复杂的指针,如指针的指针、数组的指针,指针的数组,函数的指针等。 
用指针虽然灵活,但也对程序的稳定性造成一定威胁,主要原因是当要操作一个指针时,此指针可能正指向一个非法的地址。安安全全地使用一个指针并不是一件容易的事情。 

<规则6> 防止引用已经释放的内存空间。 
在实际过程中,稍不留心就会出现在一个模块中释放了某个内存块(如指针),而另一模块在随后的某个时刻又使用了它。要防止这种情况发生。 

<规则7> 程序中分配的内存、申请的文件句柄,在不用时应及时释放或关闭。 
分配的内存不释放以及文件句柄不关闭,是较常见的错误,而且稍不注意就有可能发生。这类错误往往会引起很严重后果,且难以定位。 

<规则8> 注意变量的有效取值范围,防止表达式出现上溢或下溢。 
示例: 
unsigned char cIndex = 10; 
while( cIndex-- >= 0 ) 

} //将出现下溢 
当cIndex等于0 时,再减1不会小于0,而是0xFF,故程序是一个死循环。 

char chr = 127; 
chr += 1; //127为chr的边界值,再加1将使chr上溢到-128,而不是128。 

<规则9> 防止精度损失。 

 1/4    1 2 3 4 下一页 尾页
 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自常见C/C++编码规范(5)

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]