一、出现原因:
这个错误原则上由以下原因引起:
访问不存在的内存地址
访问系统保护的内存地址
访问只读的内存地址
空指针废弃
堆栈溢出
内存越界
这里介绍最常见的情况:
程序内定义了空指针,在将指针指向一个变量前调用了该指针。容易出现在使用链表的场合。
二、举个栗子:
#include <stdio.h>
int main (void)
{
int *ptr = NULL;
printf ("%d\n", *ptr);
return 0;
}
输出结果:
段错误(核心已转储)
定义了空指针ptr,但是通过printf函数调用了该变量,因此导致报错。
三、解决方法:
整理代码逻辑,赋值后再调用。在创建链表节点时要随时与前节点建立逻辑关系。