程序异常--常见类型--linux系统--系统core

本文深入探讨了程序中常见的内存错误,包括空指针、数组越界、堆栈溢出等,解析了这些错误的原理及如何避免。同时,介绍了Linux环境下C程序的异常处理机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

未使用合法内存

空指针:你的进程,要去写一个空指针,也就是null,本质上就是0,线性地址空间的0页,cpu 设计时实现了0页故障,从而进入相应的内核处理例程

再一个:写一个内存地址,如果这个地址,物理内存没分配,并且不符合page fault的条件,内核就会报故障

数组越界,操作了不属于你的变量的内存,在某些情况下,会导致数据错误,会死掉

堆栈溢出,申请了超过可用容量的堆栈空间。

 

内存使用规范类

还有 bus error,就是对齐错误,某种内存使用要求对齐

 

代码错误

一个指针未初始化,就使用,野指针,也是指向某个不该指向的内存

这是因为,如果代码里,误修改了别的变量,如果那个变量的值,还在可取值正常范围内,可能不会导致错误,

但是,如果修改后的值,在它应该发挥作用的某个代码的地方,检查失败,或用它计算某个值失败,可能就会报错,

 

linux的C程序自身无程序异常处理机制,只能是系统捕捉到之后,进行处理,把内存状态记录下来

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值