“总线错误”消息是什么意思,它与分段错误有什么不同?


当前回答

总线错误现在在x86上很少见,发生在你的处理器甚至不能尝试请求的内存访问时,通常是:

使用具有不满足其对齐要求的地址的处理器指令。

分段错误发生在访问不属于你的进程的内存时。它们非常常见,通常是以下原因造成的:

使用指向已释放对象的指针。 使用未初始化的伪指针。 使用空指针。 缓冲区溢出。

PS:更准确地说,不是操作指针本身会导致问题。它正在访问它所指向的内存(解引用)。

其他回答

我在Mac OS X上出现总线错误的原因是我试图在堆栈上分配大约1Mb的内存。这在一个线程中工作得很好,但是当使用openMP时,这会驱动总线错误,因为Mac OS X对于非主线线程有非常有限的堆栈大小。

当根目录为100%时,我得到一个总线错误。

这取决于你的操作系统、CPU、编译器以及其他因素。

一般来说,这意味着CPU总线无法完成命令或发生冲突,但这可能意味着一系列事情,具体取决于正在运行的环境和代码。

我相信内核会引发SIGBUS 当应用程序显示数据时 数据总线上的不对中。我认为 那是因为大多数[?现代编译器 对于大多数处理器,垫/对齐 为程序员提供的数据 以前的对准问题(至少) 减轻,因此一个人看不见 这些天SIGBUS太频繁(AFAIK)。

来自:这里

它通常表示未对齐的访问。

试图访问物理上不存在的内存也会产生总线错误,但如果您使用的是带有MMU的处理器和没有bug的操作系统,则不会看到这个错误,因为您不会将任何不存在的内存映射到进程的地址空间。