• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++常见崩溃问题分析

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

C++ 常见崩溃问题分析

http://blog.csdn.net/kyfvc/article/details/7185365

从事自动化测试平台开发的编程实践中,遭遇了几个程序崩溃问题,解决它们颇费了不少心思,解决过程中的曲折和彻夜的辗转反侧却历历在目,一直寻思写点东西,为这段难忘的经历留点纪念,总结惨痛的教训带来的经验,以期通过自己的经历为他人和自己带来福祉:写出更高质量的程序;

 

由于 C 和 C++ 这两种语言血缘非常近,文本亦对 C 编程语言有借鉴作用;

 

二、C++ 崩溃分类

一切的偶然并非偶然

在编程实践中,遭遇到了诸如内存无效访问、无效对象、内存泄漏、堆栈溢出等很多C / C++ 程序员常见的问题,最后都是同一个结果:程序崩溃,为解决崩溃问题,过程都是非常让人难以忘怀的;

 

可谓吃一堑长一智,出现过几次这样的折腾后就寻思找出它们的原理和规律,把这些典型的编程错误一网打尽,经过系统性的分析和梳理,发现其内在机理大同小异,通过对错误表现和原理进行分类分析,把各种导致崩溃的错误进行归类,详细分类如下:

错误类型

具体表现

备注(案例)

声明错误

变量未声明

编译时错误

初始化错误

未初始化或初始化错误

运行不正确

访问错误

1、  数组索引访问越界

2、  指针对象访问越界

3、  访问空指针对象

4、  访问无效指针对象

5、  迭代器访问越界

 

内存泄漏

1、  内存未释放

2、  内存局部释放

 

参数错误

本地代理、空指针、强制转换

 

堆栈溢出

调用堆栈溢出:

1、递归调用

2、循环调用

3、消息循环

4、大对象参数

5、大对象变量

参数、局部变量都在栈(Stack)上分配

转换错误

有符号类型和无符号类型转换

 

内存碎片

小内存块重复分配释放导致的内存碎片,最后出现内存不足

数据对齐,机器字整数倍分配

 

其它如内存分配失败、创建对象失败等都是容易理解和相对少见的错误,因为目前的系统大部分情况下内存够用;此外除0错误也是容易理解和防范;

 

 

C++记录程序崩溃时的dumpfile

http://anfernee.blog.51cto.com/4828774/994536

    

        C++程序崩溃生成dump

http://blog.csdn.net/whatday/article/details/44857921

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c语言中不同进制数的表示发布时间:2022-07-13
下一篇:
C/C++——C语言常用库函数发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap