# 7-1 segmentation fault(p159)

segmentation fault一般是由于解除引用一个未初始化或非法值的指针引起的，例如

```c
int *p = 0;
*p = 17;
```

一个微妙之处在于，段错误一般都是一个简洁的症状，另外如果未初始化的指针恰好具有未对齐的值，它将会产生**总线错误**而非段错误。

通常情况下段错误的直接原因是:

* 解引用一个包含非法值的指针
* 解引用一个空指针
* 未得到正确的权限
* 用完了堆栈或堆空间
