C程序崩溃的常见原因

写完的C程序在运行时,若弹出系统的异常提示框,则显示程序崩掉了,常见的原因有如下2点:

1)内存越界

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


2)指针为空

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

编译器一般会对未初始化的指针变量进行warning警告,所以在编译程序后不要忽略警告,这些警告有可能就是以后错误的根源;比较隐蔽的一类是利用函数对指针变量进行初始化,但初始化失败了,如malloc函数,fopen函数,对于失败的情况这些函数都会返回0,若不加以判断,很可能在后续的使用中会出问题,当程序比较复杂时,这种错误很难排查,特别是出现了程序有时依然会正常运行偶尔会崩掉的怪现象的时候,所以在对指针进行赋值后,在不确定是否赋值成功时就应该及时判断。


总之,C程序的运行异常一般与内存的不规范操作有很大关系,在排查时首先应该检查是否存在指针或数组潜在的越界可能,能够确定赋给了指针可用的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值