C++编程过程中常见的崩溃原因

程序运行中常见崩溃原因总结

常见的崩溃原因

工作中经常会碰见程序运行时崩溃的问题,这里就个人经常碰到的崩溃原因做一归纳。其常见崩溃的原因如下:
【1】空指针调用函数导致。

表现在指针为被赋有效值,依旧为空指针的情况下,调用函数。

【2】内存越界。

表现在数组通过下表访问元素,其下标超过数组可访问的下标上限。

【3】内存溢出

表现在程序逻辑存在较大漏洞,使得运行过程中,内存不断飙升,最终内存不足,程序崩溃。

【4】内存被多次释放

表现在存在继承关系的类之间,创建的类对象,在使用结束后,多次手动或者自动调用析构函数,导致已经被析构的类对象,再次被析构。

个人感觉这条最考验对C++的特性的理解及掌握程度。
【5】内存释放顺序错误

表现在后被调用的析构函数中需要其子类的对象。

这条也是对C++基础知识的考验和领悟。一般不易查觉。因为程序崩溃的时候和第四条一样,不会在奔溃处直接看到像第一、二、三条那样很明显的错误。
解释:
C++析构的时候先调用子类的析构,再去调用其父类的析构函数。*
由于先析构的是子类,那么子类的成员变量会被释放掉内存,而其父类的析构函数中又间接调用了子类的数据成员。故而造成崩溃。
以上是我简单的总结归纳,只是冰山一角。

如何避免

提升个人编程能力、领悟能力,养成良好编程习惯。

共勉

碰到崩溃不能一眼看出问题的时候,切勿直接放弃。查看堆栈信息,一步一步向前推,反复推量。

猜你喜欢

转载自blog.csdn.net/blqzj214817/article/details/131004993
今日推荐