程序运行总是提示 segmentation fault (core dumped)是什么错啊?
05/14/05 10:26 AM Edit Reply Quote
duckybsd
Site Admin
http://linux.computersci.net/forum/showflat.php?Cat=&Board=UBB24&Number=3013&page=4&view=collapsed&sb=7&o=
是一些细节错误:
指针没有赋值,
变量赋值类型有错误。
错误类型并不难判断,不过地方是难找了些。
你可以在你的代码里加入一些测试点,比如在某一行插入:
printf("XXXXXX\n");
如果说在Segmetation Fault 前有你要打印的这些内容,那就是说错误在测试点后面。再继续查找。
segmantation fault :最主要的错误就是 声明了指针,但是没有初始化 ,结果再后来的时候进行间接引用 ,
就出现问题了。
比如
char *p ;
char test[] = "hello";
strcpy(p,test);
肯定会segmantation fault 了。
所以编程的时候,养成习惯:
比如
char *p = NULL;
FILE *ftp = NULL ;
还有:
char test_str[100];
memset(test_str,'\0',sizeof(test_str) ; 把字符串全部清空!
另外,利用malloc()函数分配内存空间的时候,也要检查,是否为空。 这都是c程序员需要自己完成的,
不能偷懒 ,否则 将来有什么发疯掉。
还有在程序多加一些assert()比较好,尤其是关键的地方,
比如一个指针 p 不能为空,可以这样断言: assert(p !=NULL) ,如果将来某一天程序出错了,p为空了,
那程序会马上中止,并打出了程序所在的行 ,便于查错!