段错误总结

段错误总结:

segmentation fault (shortened to segfault), bus error或者access violation一般是由于试图访问CPU无法物理寻址的内存(access memory that the CPU cannot physically address)。

Bus error:

引起的原因:
  • 不存在的地址
  • 不对其的访问(unaligned access)

segmentation fault:

当程序试图访问无法访问的内存,或者访问方式不允许时,产生该错误segmentation fault。
a program attempts to access a memory location that it is not allowed to access, or attempts to access a memory
location in a way that is not allowed (for example, attempting to write to a read-only location, or to overwrite part
of the operating system).
引起的原因:
  • 试图执行一个没有编译完全的程序。不过大部分编译器不允许输出带编译时错误的二进制文件(如exe,elf)。
  • 堆溢出(buffer overflow)
  • 使用未初始化的指针
  • 解引用空指针
  • 试图访问程序未拥有的内存
  • 试图改写程序未拥有的内存
  • 超出栈的大小(runaway recursion or an infinite loop)
一般来说,段错误都是因为指针是空,指针乱指(未初始化),或者指向已经释放的内存。即指针指向了无法访问的内存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值