在C语言中,任何操作指令都离不开对内存的操作,所以即便编译的时候没有语法操作,但是在实际运行中有可能对内存进行非法操作,这种情况就会产生段错误Segmentation fault (core dumped)!要解决段错误就要先找到段错误的地方。
如何在程序中寻找段错误?
段错误不是语法错误,所以在编译时不会提示出错,只有等到运行时才会提示出现段错误,但是段错误不会提示在哪一行,可以通过printf()函数来寻找段错误位置,只要发生段错误,那么程序就会马上结束。
举个例子:
printf("11111!\n");
xxxx;
printf("22222!\n");
yyyy;
printf("33333!\n");
zzzz;
假如运行上述代码得到的执行结果为:
11111!
22222!
Segmentation fault (core dumped) -> 说明段错误是出现"yyyy;"
段错误一般是指针指向有问题,找到段错误的地方最好打印出指针内容看看是不是自己预期的指针内容再进行修改,如果是链表就画图查看自己的链表逻辑有没有出问题
总结解决段错误的步骤:
1.使用printf()函数寻找段错误的地方
2.打印出现段错误的指针,链表或者打开文件目录的返回值看看是不是自己的预期结果
3.根据结果现在修改代码重新编译