core dumped 总线错误。
是由于未对齐的读或写引起。会阻塞地址总线。
对齐的意思是 数据项只能存储在地址是数据项大小整数倍的内存位置上。
原因:与任意的对齐有关的额外逻辑会使整个内存系统更大更慢。通过迫使每个内存访问局限在一个cache行或者一个单独的页面内,可以极大地简化如chache控制器和MMU这样的硬件。
编译器通过自动分配和填充数据来对齐。
表示按照书中的说法在VS2010上试验,并没有bus error:
union
{
char a[10];
int i;
}u;
int *p =(int*)&(u.a[1]);
*p =17;
2、端错误
segmentation falut
是由MMU异常引起,而该异常是由于解除引用一个未初始化或者非法值的指针引起;在未得到正确的权限时进行访问;用完了堆栈或者栈空间。
这个错误的确经常见。