什么是总线错误? 平时开发过程中,我们常遇到的、引起进程崩溃的错误,大多都是段错误吧。段错误(segmentation fault)就是指访问的内存超出了系统所给这个程序的内存空间,比如操作空指针、数组越界等。
与段错误比较相似,总线错误(Bus Error)就是因为对非对齐地址的访问导致CPU读取数据违反了一定的总线规则。
CPU处于性能方面的考虑,要求对数据进行访问时都必须是地址对齐的。如果发现进行的不是地址对齐的访问,就会发送SIGBUS信号给进程,使进程产生 core dump。
总线错误与CPU架构有关,有些架构的CPU支持不对齐访问。下面我们通过实例来进行分析:
|