编程中, 经常会遇到这样或者那样的错误, 除了一部分是因为需求、分析设计的问题外, 另一部分则是和代码相关的。 总结一下代码相关的常见错误,欢迎补充!
1. 内存泄露
内存只申请使用, 异常地方处理却没有释放掉。
2. 内存(数组)越界访问
数组越界很常见, 尤其是使用全局变量数组变量。
3. 野指针
free的指针, 要及时指向NULL,否则就是野指针。
4. 访问空指针
指针使用, 要时刻注意是否为NULL。
5. 引用未初始化的变量
养成任何变量的定义, 都要进行初始化,尤其是结构体变量, 否则会因为未初始化造成的随机值而出现莫名其妙的bug。
6. 指针运算错误
指针的运算, 尤其是++, +1, --, -1 等操作, 要按照指针类型来处理
7. 内存分配/释放不配对
内存的管理, 要时刻注意分配和释放要一起出现, 就跟代码段的括号要成对出现。
8. 返回指向临时变量的指针
深入了解关于函数调用的本质, 了解函数的参数和返回值, 避免出现这类错误。
9. 试图修改常量
这个在字符串的处理中经常出现, 深入了解字符串常量的机制是关键。
10. 误解函数传值与传引用
同8 , 函数的参数传递,尤其是指针参数的传递,要理解深刻。
11. 栈溢出
嵌入式编程容易出现, 从效率方面讲, C语言的函数传递, 一般建议用指针, 特别是针对大结构体的时候。
12. 符号重名
采用规范的命名机制, 应该就不会出现。 比如全局变量以g_开头, 宏全部大写等
13. 字节对齐
这个和CPU平台相关, 一般都是4的整数倍。
14. 字节顺序
网络通信编程中经常遇到, 大端字节顺序和小端字节顺序, 尤其是针对CPU发通信协议包的时候, 要注意16bit 和 32 bit的数据和 相关的结构体。
15. 忘记函数的返回值
函数返回值要明确, 好的习惯是即使是void的函数, 也要return 。