2010年6月7日
摘要: 3.如何避免SIGSEGV 良好的编程习惯永远是最好的预防方法。良好的习惯包括:尽量按照C标准写程序。之所以说是尽量,是因为C标准有太多平台相关和无定义的行为,而其中一些实际上已经有既成事实的标准了。例如C标准中,一个越界的指针导致的是无定义的行为,而在实际情况中,一个越界而未解引用的指针是不会带来灾难后果的。借用CU的一个例子,如下: 1 #include <stdio.h> 2 #... 阅读全文
posted @ 2010-06-07 13:23 Fancy 阅读(3068) 评论(0) 推荐(0) 编辑
摘要: 2.指针越界和SIGSEGV 经常看到有帖子把两者混淆,而这两者的关系也确实微妙。在此,我们把指针运算(加减)引起的越界、野指针、空指针都归为指针越界。SIGSEGV在很多时候是由于指针越界引起的,但并不是所有的指针越界都会引发SIGSEGV。一个越界的指针,如果不解引用它,是不会引起SIGSEGV的。而即使解引用了一个越界的指针,也不一定会引起SIGSEGV。这听上去让人发疯,而实际情况确实如此... 阅读全文
posted @ 2010-06-07 13:20 Fancy 阅读(3992) 评论(1) 推荐(3) 编辑
摘要: 1.什么是“Segmentation fault in Linux”? 我们引用wiki上的一段话来回答这个问题。A segmentation fault (often shortened to SIGSEGV) is a particular error condition that can occur during the operation of computer ... 阅读全文
posted @ 2010-06-07 13:18 Fancy 阅读(1702) 评论(1) 推荐(0) 编辑