程序奔溃的原因

来源:https://blog.csdn.net/ciengwu/article/details/76861831

https://blog.csdn.net/erwuhuoche/article/details/81582817

常出现程序崩溃的几种状况<C语言奔溃的原因内存越界,指针为空>

1)内存越界

具体的代码形式可为数组下标越界和指针移动越界,在操作一个数组或是指针之前,要明确其边界范围,不应访问不属于系统分配的内存区域。

2)指针为空

即此时通过指针访问的内存地址为0,这个地址系统是不允许访问的,系统也不会分配地址为0的内存给程序,这属于一种特殊的内存越界行为。空指针常见于未初始化或初始化(赋值)失败的指针变量。
 

程序崩溃对于程序猿来说,时经常出现的问题,如果你都没有出现过,那大佬快收下我的膝盖吧。程序崩溃一般都发生在运行时期,而崩溃的原因一般都是程序猿的失误所导致的,在这里我就总结了这几种程序崩溃的

读取未赋值的变量

这个错误一般是由于程序猿粗心大意,没有给变量初始化和赋值,导致该变量的值为脏值。

函数栈溢出

函数栈溢出一般是由两种情况引起的: 
1、定义了一个体积太大的局部变量或者参数,参数和局部变量一般都是存储在栈中的,但是栈所占的内存空间很小,在32位下只占有8M的空间,因此如果没有使用malloc和new来在堆上创建内存空间的话,栈溢出就会很容易发生。 
2、函数的嵌套调用的层次太深了,就像无穷递归和无穷的循环调用一样。

数组访问越界

这个是程序崩溃最常见的问题,这个就只需要程序猿仔细小心点了。

指针的目标对象不可用

指针所指向的对象要正常使用,它就必须是一个合法的,有效的,可以访问的对象,像当指针为空指针或者是野指针时,你再使用它程序就会立马崩溃。而出现空指针或者野指针一般都是下面这几种操作导致的: 
1、指针未赋值 
2、free/delete释放了该对象 
3、不恰当的指针强制类型转换

参数错误

这个就是由于程序猿的猿性导致的了,我们一般为了保证参数合法,都会设置断言来保证只有参数合法的情况下程序才可以正常运行,因此这类错误一般都是由于触发了断言导致的。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值