今天主要内容是常见的编程错误以及解决办法。主要还是编程习惯的养成,包括编程风格、编程原则、常见易出现问题的规避方法。
一、资源泄露
包括内存、I/O资源的系统资源,使用之后要及时释放。
Tip 1:malloc()申请内存之后需要检查是否申请成功,但是C++中,即使是申请成功也有可能出现异常,需要使用try{...} catch(){....}抓取是否有异常;成功后需要将内存初始化为0。
Tip 2:使用完之后需要free()掉,指针置NULL。
Tip 3:遵循晚申请,早释放原则。
Tip 4:使用对应的内存申请释放方法;malloc() -- free(); new -- delete
Tip 5: Linux操作系统下栈内存、I/O资源均有限制,例如I/O为1024,所以申请内存不要申请很大的内存,I/O使用完后关闭,否则资源耗尽出现异常。
Tip 6:不要申请很大的栈内存,如果很大效率会降低,迫不得已申请为提高效率,将开头与结束置‘\0’。
*Tip 7:多次申请内存,在程序异常退出时均要对释放的内存进行释放。
Tip 8:内存空洞:内碎片与外碎片。
二、函数传值
函数参数均是值传递,包括指针也是。
Tip 1:注意传递指针时,子函数内没有修改变量内容的情况就是值传递,尤其是指针,很容易出错。
Tip 2:传参首先进行合法性检查。
Tip 3:函数参数不要因编译器不同结果不同,例如:参数为表达式,计算顺序不同结果不同的因编译器编译顺序。
三、数据类型
C语言强制类型转换很方便,但是也带来很多问题。
Tip 1:大范围数转换为小范围数,会因OS的大小端造成数据传递不一致现象。
Tip 2:小范围数转为大范围数,会导致多读取字节数据,而非预计的数据。
Tip 3:不同平台下数据类型会不相同。
Tip 4:注意循环中是否会出现死循环。例如char i;for(i=0; i<300; i++){....}
char型数据-128~127,所以永远不会退出。
四、字节对齐
Tip 1:#pragma pack(1)设计对齐字节大小
*五、字符串
字符串最容易出问题 ,包括越界等安全隐患。
Tip 1:所占内存大小为实际长度加上结尾的'\0',分配之后以及复制等操作之后制动加结尾'\0',小心越界。
Tip 2:注意内存初始化,字符串拷贝或是其他操作会由以前内容所影响。
阅读(588) | 评论(0) | 转发(0) |