segmentation fault 即段错误,一般都是出现了非法的地址写法操作导致的。
常见的几种情况:
1、空指针访问。
如果指针为空(NULL), 那么对空指针的读写操作都会导致segmentation fault。
![](https://i-blog.csdnimg.cn/blog_migrate/fc4636e2c5638a4b639357e8851c74a1.png)
2、指针指向非法区域后的写操作。
C语言的指针指向了非法区域,然后对其写入,会带来不可预知后果,最严重的就是程序崩溃,此时也是segmentation fault。
![](https://i-blog.csdnimg.cn/blog_migrate/44ac87b589e3083ddd4a62fb3a58aa59.png)
3、常量空间破坏。
比如常量字符串,如果修改其内容,则会出现segmentation fault。
![](https://i-blog.csdnimg.cn/blog_migrate/3dc9461085c45d4fb988bb3681957cc6.png)
4、在一些比较老的操作系统上,非对齐访问也可能导致segmentation fault。
![](https://i-blog.csdnimg.cn/blog_migrate/4720204e443045b0d85d415ce8974ccb.png)