常见bug的分类

4 篇文章 0 订阅

语法错误比较容易识别,下面主要介绍一些非语法的错误。

1、内存泄漏

内存泄漏指分配的内存在用完后没有收回,导致一段时间后内存减少,系统变慢。例如,malloc、new等动态申请内存的操作。当申请了一块内存然后在释放前又一次申请时,那么原来那块内存将丢失不能被收回。

2、逻辑错误

当语法正确,但是却没有达到预期的目的时,就发生了逻辑错误。这多是算法设计有缺陷或代码输入错误造成的。这种错误无法由编译器和调试器发现,因为程序没有问题,并如实按照要求去执行了。

3、内存越界

当指针或数组使用了不属于自己的内存时,就会引发该错误。当这种错误仅导致访问了不该访问的数据时,未必会引起程序中断。但是当访问到系统区域时,则多数情况下会导致程序崩溃。

4、无限循环

对于循环类语句,如for、while等,如果循环终止条件设置不恰当,就会导致程序无限循环下去。与第2种错误一样,程序也没有问题,但是执行时却不会停止。

5、指针错误

指针导致的错误主要有3类:没有初始化,却使用;已删除,但仍然使用;指针无效。前两类都可以通过观察源代码来排查,第3类则必须通过分析来找出原因。例如,强行将字符型指针转换为整型指针,系统只是对内存块的边界做了重新界定,但是对于数据没有任何操作。由于内存块扩大了,转换后指针的数据将是没有任何意义且未知的。

6、编码错误

这主要指声明与定义不一致,或者使用与定义不一致。例如,声明某个函数接收3个参数,但是定义时却只有2个,或者使用时只给出了2个等。

——摘自《C++从入门到精通》 秦广军等编著

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值