转贴-程序运行总是提示 segmentation fault (core dumped)是什么错啊?

久未见 提交于 2020-04-04 01:18:21

程序运行总是提示 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为空了,
那程序会马上中止,并打出了程序所在的行 ,便于查错! 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!