- 当出现以下情况(大概率都是在调试的时候会出现的问题)中文翻译过来大概就是:程序接收信号SigSegv,出现了段错误。下面就是可能会弹出这个的可能原因。
- 例一:
-
include <stdio.h> int main(){ int a=0; scanf("%d",a); printf("%d\n",a); return 0;
仔细看上边的代码段,可能乍一看就是输入一个数然后就输出,为什么调试会出现这个问题,其实仔细一看就能发现,你的输入位置将&a写成了a,就会出现这个报错。
-
例二:
#include <stdio.h> int main(){ char *p; p = NULL; *p = 'x'; printf("%c", *p); return 0; }
-
当你用到指针的时候,如果你用的这个指针是个空指针,并且你在尝试向空指针里面去写入数据,那么你调试的时候,也会出现最开始的那个弹窗。
-
例三:
-
内存越界,或者是当用到数组时候,会出现数组越界的情况
-
#include <stdio.h> int main(){ int a[1]; printf("%c", a[1000000000]); return 0;
这就是明显的数组越界,这只是给简单的一维数组越界,二维数组会出现更多可能的数组越界,所以你要检查你的数组是否越界。
-
例四:
-
你的定义的变量类型和想要输出的变量类型并不一致,有可能会出现这个问题,当然这并不一定,在不同的电脑跟环境下,可能会出现不同的情况。
-
所以当你调试的时候会出现这个弹窗你可以参考以上的几个可能存在的小错误(编译基本上都不会显示的)。