日期:2014-05-16 浏览次数:20703 次
这真是一个蛋疼的错误!
笔者经历过几次这个错误,一直也没有注意,知道后来经常遇到这个错误,觉得应该总结出来,引以为戒,同时也为各位同仁们,增加错误库,提高解决问题的速度。
这个错误,查一下就知道是段错误,一般是指针出错,或者内容益处,反正就是一些不正常操作,系统无法执行下去了,就会产生这个错误。
废话,这谁都知道,但是要根据具体问题,具体分析,说的那么虚,谁知道到底为什么?
我遇到过几次这种错误,印象最深的就是两次:
1.在select的时候:
一般来说,在多线程的Linux中,select要被经常使用,如果你没有出错过,那你是幸运的,笔者有一次用select,查了很长时间(真的时间很长),才发现原来我监视的文件描述符没有初始化,是个负数!于是就段错误了。
2.在memset的时候:
让我们看下代码,就知道了,纠结了我一个上午,因为昨天测试的时候是好的,后来改动了一下,就出了问题
char buf[128];
if ((numlen > 20) || (len > 140))
{
return FALSE;
}
memset(buf,0,256);
也许你看出来了,我定义了一个128个字节大小的数组,却把256个字节的东西都清零了,我根本不知道后面的128的数据是什么,就这样被我清零了。。。
编程要心细,如果有一个可以完美运行的版本一定要存下来,否则当你出错的时候,真的会急死人的,好了,去吃饭了~~~