zoukankan      html  css  js  c++  java
  • C++ 常见崩溃问题分析

    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

  • 相关阅读:
    flume配置和说明(转)
    ganlia安装配置文档
    (转)传统MySQL+ Memcached架构遇到的问题
    (转)QRCODE二维码介绍及常用控件推荐
    (转) VS2012程序打包部署详解
    (转)安装程序发布利器——InstallShield 2011 Limited Edition
    (转)linux下mysql的安装过程
    (转)反向代理服务器的工作原理
    (转)工业4.0消灭淘宝只需十年
    (转)TCP注册端口号大全
  • 原文地址:https://www.cnblogs.com/chulia20002001/p/7068339.html
Copyright © 2011-2022 走看看