NULL 指针

在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为指针。

野指针

“野指针“不是 NULL 指针,是指向”垃圾“内存的指针。

崩溃

访问这两个指针(包括数组越界等)时,实际上是在访问没有映射的地址,或试图更新没有写权限的内存页等,这时内核就会发送一个 SIGSEGV 信号给进程,进程收到这个信号后就会退出(默认情况下)。

进程挂掉

进程访问非法内存时,会被 Linux 内核杀掉,不会对其它进程造成影响,这也是保护模式的用途。

内核挂掉

但是内核如果访问到了非法内存,就没人为它擦屁股了,直接死机。

参考

Linux信号(signal) 机制分析