错误描述

最近在用Dev-C++编写程序时,程序能够编译运行,奈何本该接收键盘输入数据的程序,运行之后直接显示“请按任意键继续…”字样结束运行了。调试后发现了报错信息“Program received signal SIGSEGV,Segmentation fault.

  • 错误信息
  • 程序运行截图

    刚开始我以为是编译器的问题,更换了VC++6.0之后错误依然存在。

出错原因

SIGSEGV是当一个进程执行了一个无效的内存引用,或发生段错误时由操作系统抛出的异常。

查阅了部分相关的文章和进行多次尝试后,总结出可能的出错原因如下:
1、指针未初始化

#include<stdio.h>
int main(){char *a;printf("%s",a);return 0;
}

2、数组未被初始化,数组下标越界,数组元素不存在等

#include <stdio.h>
int main(){char test[1];
printf("%c", test[10000]);
return 0;
}

3、使用printf输出变量时变量格式控制不合理
例如:试图把int型的变量a以%s的格式输出

#include<stdio.h>
int main(){int a=1;printf("%s",a);return 0;
}

4、定义在main函数中的二维数组过大

#include<iostream>
using namespace std;
int main(){int a[1000][1000];int N,M;cin>>N>>M;for(int i=0;i<N;i++)for(int j=0;j<M;j++)cin>>a[i][j];cout<<a[0][0];
}

排查过后,发现自己是在main里面定义了过大的二维数组才导致了错误>﹏<。

解决方法

针对可能导致SIGSEGV的四种原因可分别采用以下的解决方法:
1、指针、数组未初始化>>>初始化指针、数组
2、数组下标越界、数组元素不存在>>>检查数组下标,禁止数组越界,给不存在的数组元素赋值
3、使用printf输出变量时变量格式控制不合理>>>规范输出变量格式(%d%s%d)
4、在main函数中定义了过大的二维数组>>>将数组的定义移至main函数之前

另外,经过尝试之后,还发现main函数中定义的最大二维数组为[720][720]。
所以也就意味着,
如果要定义比这更大的二维数组就要在main函数外面定义啦!!

参考文章

Program received signal SIGSEGV, Segmentation fault.段错误调试
https://blog.csdn.net/oriel123/article/details/77715620

Debug:Program received signal SIGSEGV,Segmentation fault.相关推荐

  1. 解决Program received signal SIGSEGV, Segmentation fault.的辛酸

    最近写一个算法很简单,涉及到链表的归并,在追求速度的时候,尽最大程度上使用了指针,然而却带来了异常灾难. 编译通过,在debug的时候,我看见了这个.....Program received sign ...

  2. dev c++ 中的Program received signal SIGSEGV Segmentation fault

    在编写程序的时候程序不能正确输出结果或者程序无法运行 在debug的时候系统提示 系统提示报错Segmentation fault 从字面上理解 SIGSEGV是是当一个进程执行了一个无效的内存引用, ...

  3. error: Program received signal SIGSEGV, Segmentation fault. (Codeblocks, C++)

    关于"error: Program received signal SIGSEGV, Segmentation fault.". 之前多次遇到的情况都是:对空指针进行了操作. 比如 ...

  4. Program received signal SIGSEGV, Segmentation fault.

    GDB调试的时候出现了: Program received signal SIGSEGV, Segmentation fault.(程序收到信号SIGSEGV,分段故障) SIGSEGV:在POSIX ...

  5. error: Program received signal SIGSEGV, Segmentation fault. (Codeblocks, C++)(2)

    之前,针对这个问题也总结过:"error: Program received signal SIGSEGV, Segmentation fault. (Codeblocks, C++)&qu ...

  6. Program received signal SIGSEGV, Segmentation fault

    c语言的小问题,纠结了我一会,归总还是自己这块不是太明白. 首先我们先看: int a;//这个是申明了一个int类型的数,实际开辟了一个内存空间给a,a由一个,地址值.接下来你操作a就不会有问题. ...

  7. ros中 指针传递 ros::NodeHandle *node 报received signal SIGSEGV, Segmentation fault

    ros中 指针传递 ros::NodeHandle *node 报错: Thread 1 "currencyChassis" received signal SIGSEGV, Se ...

  8. C++报错signal SIGSEGV, Segmentation fault

    最近在学习链表的时候遇到了一个问题,在以下代码中访问结点s会报signal SIGSEGV, Segmentation fault LNode *p, *s; // p为要插入位置的前驱结点,s为待插 ...

  9. Program terminated with signal SIGSEGV, Segmentation fault.

    问题: 在程序运行时出现了:Segmentation fault (core dumped),分段故障(堆芯转储)也就是段错误. 我首先在一篇博客上面找到如何使用gdb调试: 1.首先使用ulimit ...

最新文章

  1. AngularJS table 按照表头字段排序功能(升序和降序)
  2. 跟vczh看实例学编译原理——二:实现Tinymoe的词法分析
  3. 老司机的应用级监控——spring?actuator
  4. T1-TensorFlow基础
  5. java并发中CountDownLatch的使用
  6. maya 中使用节点连接来求余数:
  7. POJ 1276 完全背包
  8. 神经网络与深度学习——TensorFlow2.0实战(笔记)(一)
  9. 深度学习目标检测系列:一文弄懂YOLO算法|附Python源码
  10. ax3000 梅林_梅林甘蔗下种忙 古法红糖“熬”成致富新产业
  11. npm install 时候报错 gifsicle@5.2.0 postinstall: `node lib/install.js`
  12. 【破解】Flash Decompiler Trillix.4.1.1.720 破解补丁
  13. python工程师干什么的_Python就业前景和工资待遇分析,你学Python了吗?
  14. cipher命令(转)
  15. 用Python搞了个基金查询机器人,还可以拓展!
  16. freyja框架 github地址
  17. 转载:手机银行技术讨论2
  18. python入门指南阅读答案_第二章 _【Python入门指南】免费在线阅读 - 九六城堡小说论坛...
  19. 开机提示:one of your disks needs to be checked解决方法
  20. 阿里程序员,过完年第一天就要被劝退!让人感觉现实是如此残酷!

热门文章

  1. html 页面如何引用阿里云图标?
  2. RefactoringGuru 代码异味和重构技巧总结
  3. win11使用优化-这后,就可以放弃win10了
  4. 湖南质监局:南山奶粉可正常生产销售-南山奶粉-许可证
  5. 关于Socket.IO的知识点记录
  6. rabbitmq官方的六种工作模式
  7. Hive 区分cluster by、distribute by + sort by、order by以及创建表带有clustered by和sort by
  8. cad特性匹配快捷键命令_CAD快捷特性和特性匹配
  9. Spring系列一:Spring基础篇
  10. 计算机英语和公共英语的区别和联系,公共英语(PETS)与大学英语四级(CET)的区别和联系...