全部博文(61)
分类: C/C++
2010-09-15 20:05:19
SIGBUS与SIGSEGV信号的一般区别如下:
1) SIGBUS(Bus error)意味着指针所对应的地址是有效地址,但总线不能正常使用该指针。
通常是未对齐的数据访问所致。
2) SIGSEGV(Segment fault)意味着指针所对应的地址是无效地址,没有物理内存对应该地址。通常导致段错误的几个直接原因:1、解除引用一个包含非法值的指针。2、解除引用一个空指针(常常由于从系统程序中返回空指针,并未经检查就使用)。3、在未得到正确的权限时进行访问。4、用完了堆栈或堆空间(虚拟内存虽然巨大,但绝非无限)。
这些是我个人的一些看法,希望和大家交流。。。