program received signal sigsegv,Segmentation fault的解释(可能并不全面)

  • 当出现以下情况(大概率都是在调试的时候会出现的问题)中文翻译过来大概就是:程序接收信号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;

    这就是明显的数组越界,这只是给简单的一维数组越界,二维数组会出现更多可能的数组越界,所以你要检查你的数组是否越界。

  • 例四:

  • 你的定义的变量类型和想要输出的变量类型并不一致,有可能会出现这个问题,当然这并不一定,在不同的电脑跟环境下,可能会出现不同的情况。


  • 所以当你调试的时候会出现这个弹窗你可以参考以上的几个可能存在的小错误(编译基本上都不会显示的)。

  • 38
    点赞
  • 115
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值