|
|
|
|
| 程序运行总是提示 segmentation fault (core dumped)是什么错啊? |
 程序运行总是提示 segmentation fault (core dumped)是什么错啊? - Qiaoxd [ 2005-04-15 21:59 | 0 byte(s)]
 Re: 程序运行总是提示 segmentation fault (core dumped)是什么错啊? - bob2004 [ 2005-04-27 19:12 | 945 byte(s)]
 Re: 程序运行总是提示 segmentation fault (core dumped)是什么错啊 - sanool [ 2005-04-21 10:37 | 179 byte(s)]
 Re: 程序运行总是提示 segmentation fault (core dumped)是什么错啊 - adong [ 2005-04-21 13:17 | 48 byte(s)]
 Re: 程序运行总是提示 segmentation fault (core dumped)是什么错啊? - gongjian701 [ 2005-04-20 16:15 | 328 byte(s)]
 Re: 程序运行总是提示 segmentation fault (core dumped)是什么错啊 - KingArthur [ 2005-04-17 12:58 | 20 byte(s)]
 Re: 程序运行总是提示 segmentation fault (core dumped)是什么错啊 - adong [ 2005-04-18 13:12 | 72 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
是一些细节错误:
指针没有赋值,
变量赋值类型有错误。
错误类型并不难判断,不过地方是难找了些。
你可以在你的代码里加入一些测试点,比如在某一行插入:
printf("XXXXXX
");
如果说在Segmetation Fault 前有你要打印的这些内容,那就是说错误在测试点后面。再继续查找。
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
用gdb跟一下吧,,,
关于指针我想说一下 其实在C语言中
如果是全局的指针 那gcc会自动将它设定为0x0的,,,
如果是函数内的局部指针, 那是的确要初始化,
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
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,' ',sizeof(test_str) ; 把字符串全部清空!
另外,利用malloc()函数分配内存空间的时候,也要检查,是否为空。 这都是c程序员需要自己完成的,不能偷懒 ,否则 将来有什么发疯掉。
还有在程序多加一些assert()比较好,尤其是关键的地方,
比如一个指针 p 不能为空,可以这样断言: assert(p !=NULL) ,如果将来某一天程序出错了,p为空了, 那程序会马上中止,并打出了程序所在的行 ,便于查错!
|
|
|
----
只要给我一个支点,我就翘起地球
|
|
[Original]
[Print]
[Top]
|
|
|