C语言编程常见问题总结

1、返回值处理

① 被调函数执行结果对业务有影响,调用者没有处理返回值:可能导致空指针访问、缺少回退处理(资源泄露)

②处理函数的返回值不准确:返回值数据类型被错误转换,返回值比较的目标不是函数的返回值系列

 

2、断言的使用

① 在断言中包含了非逻辑表达式

② 对程序运行中可能发生的情况使用断言处理

断言用于程序运行中不应该发生的情况进行检查;条件判断用于对程序运行过程中可能发生的情况进行检查;

 

3、系统资源的使用

① 资源的申请释放不在同层次;

② 在成对的系统资源操作之间异常退出;

③ 过早申请资源,导致不必要的异常退出;

④ 将申请的资源直接赋给间接变量:多级指针和全局变量

 

4、内存释放

① 用错误的函数释放内存资源

② 释放非法地址

③ 内存重复释放;

④ 释放后再使用

⑤ 释放前没有摘链

 

5、内存越界

① 字符串、内存拷贝/清零 操作越界;

② 缓冲区空间太小,导致数据溢出;

③ 非法参数没有检查导致访问越界;

 

6、空指针/野指针

① 释放全局变量上的资源后没有清零全局变量;

② 释放数据结构上挂接的内存后没有清零数据结构上的挂接字段;

③ 导致访问空指针;

 

7、未初始化

① 导致访问未初始化变量或数据结构字段或动态内存,使得问题时复现时不复现

 

8、代码冗余

① 反复多重间接寻址访问数据,反复调用相同或类似的大段代码;

② 只是临时使用小内存(<256字节),申请动态内存;

 

9、编程接口

模块接口或者驱动接口使用错误,导致功能或资源类问题异常;

 

10、资源型接口设计

① 释放参数携带的资源时规则不一致:例如成功时释放,失败时不释放;

② 复合资源的申请和释放没有封装 或申请释放函数封装不对称;

③ 资源创建/获取型函数没有将资源作为返回值,而是作为输出参数

posted on 2024-11-20 22:24  轩邈、  阅读(7)  评论(0编辑  收藏  举报

导航