问题描述:在Linux下编程有时会出现段错误的提醒,出现这种错误有可能是因为以下几种原因

1.数组越界:如果在初始化或者接收输入时内容超过了定义好的数组元素个数时会出现段错误,Linux的数组越界检查做的不是很好,在编译的时候不会报错,只有运行到越界语句时才会突然中断。这种情况是最常出现的,一不小心就会越界。

2.非法操作内存:这种情况我遇到过一次,是因为我试图通过指针修改data区内的文字常量区的字符串内容。文字常量区,顾名思义即可知道是用于储存常量的,试图修改常量,肯定是会报错的。在内存中,有很多类似的空间是只读的,系统可以往里面存东西但你只能从里面取,如果尝试修改就会出现段错误。还有的系统函数中有些参数是以只读的形式存在,如果试图修改,不论是直接修改还是通过指针修改,都会出现段错误。

3.野指针:野指针是很危险的存在,如果不给指针赋值让其指向一个事先开辟好的安全的内存,这个指针就会得到一个系统分配的随机地址,这个地址如果是系统重要启动文件的内存就不妙了(虽然系统不会让野指针接触到核心内容但是也有可能会指向危险区),这个时候如果再去通过指针操纵指针指向的内存的话会出现段错误,这也算是系统的一个对自身的保护机制。

解决方法:

①先确认有哪些输出语句没有运行到,即,有哪些你预想的输出没有出现在屏幕上。

②然后再在这些没有输出到的代码以前加上一些printf("test\n");类似于这样的一些输出语句来进行错误语句所在行的排查。

③最后定格到的语句中如果出现指针或者数组名,就可以重点检查这些数组指针是否有越界情况,或者指针是否操作了不该操作的内存。

标签:语句,错误,C语言,越界,修改,内存,下段,Linux,指针

来源: https://www.cnblogs.com/haystack/p/12629525.html

linux c代码出现段错误,Linux下段错误(C语言)相关推荐

  1. 最小的linux内核代码,带你阅读linux内核源码:下载源码、编译内核并运行一个最小系统...

    要学习linux内核,先要能够编译内核,还需要了解内核如何启动根文件系统.这样你才能在修改linux内核代码之后,完成验证的过程. 本文教你完成下列过程: 1.下载linux并编译linux内核源码 ...

  2. Python在Linux实现代码特效,关于在Linux系统上的Ubuntu上基于python3、shell语言代码的实现...

    首先打开执行终端,然后进入路径(执行文件的目录): 1.python3语言代码的实现步骤: 1>python3 xxx.py(一步实现) 2.shell语言代码的实现步骤: 1>获取属主的 ...

  3. php项目源码发布linux,php代码上传到linux服务器无法正常显示

    近期接手了一个PHP开发的项目,一直想搞个LVS管理的工具,却一直没动力去做,这次就当是学习和为了以后工作的方便吧.开发过程中遇到这么一个问题,情况如下: 情况:在windows下写好的代码,上传在L ...

  4. 打开查看linux内核代码,source insight 查看linux内核代码树【转载】

    [工程建立好之后,在工程选项下点击"同步",默认选项,同步文件后,既可以进行各种跳转查看了] Source Insight实质上是一个支持多种开发语言(java,c ,c 等等)的 ...

  5. linux中代码挂上n,Linux系统常用命令nl详解(示例代码)

    nl命令在linux系统中用来计算文件中行号.nl可以将输出的文件内容自动的加上行号!其默认的结果与cat -n有点不太一样,nl可以将行号做比较多的显示设计,包括位数与是否自动补齐0等等的功能.本文 ...

  6. 追踪Linux TCPIP代码运行,01.追踪linux代码运行——socket创建

    [前言] 一直想好好研究linux的网络实现,又不知从何入手,总是片面的学习,形不成体系.最近发现秦健老师的<追踪Linux TCP/IP代码运行>,觉得是个不错的入口点,于是决定借此一来 ...

  7. linux 索引代码的函数定义,Linux网络接口操作之if_nameindex

    系统信息 操作系统: # lsb_release -ir Distributor ID: CentOS Release: 6.7 内核版本: # uname -r 2.6.32-573.26.1.el ...

  8. linux内核代码研读与实战,Linux内核源码研读与实战演练

    Linux内核源码研读与实战演练 网盘下载链接: http://pan.baidu.com/s/1fIYf0 密码: 341f 要是网盘失效了,请加我QQ: 3113533060 课程内容: 第1部分 ...

  9. Linux分支代码必须公开吗,linux – 当拉出不同的分支时,让“git pull”请求确认...

    现在,我将重点介绍如何在执行任何拉动之前提示用户进行确认. 不幸的是,因为没有预拉hook这样的东西,我认为你不能得到实际的pull命令来直接为你做这个.在我看来,你有两个选择: 1 – 使用fetc ...

  10. linux查找代码cd文件夹,Linux fing cd 查找文件/文件夹并进入目录命令

    查找文件|文件夹并进入目录命令:cd $() [root@localhost /]# cd $(dirname "`find / -name 'ifcfg-ens33'`") // ...

最新文章

  1. java原生类型没有封装_Java基本数据类型与封装类型详解(int和Integer区别)
  2. vim win装_VIM的代码补全工具YouCompleteMe在Windows上的安装攻略
  3. 大话设计模式之装饰模式
  4. 卷积神经网络(CNN)
  5. C++中变量可以在需要时定义
  6. 基于机器学习的捡球机器人设计与实现(探索)第5篇——训练并使用Haar分类器(2019-03-02)
  7. shrio 登陆后 还是失效_在 iPhone 上取消订阅后,应用或内容会立即失效吗?
  8. opencv roberts算子_边缘检测 Roberts算子
  9. 7-4 银行业务队列简单模拟 (15 分)
  10. JS中的六大数据类型 (笔记0)
  11. python 不显示前几个字符_「Python 秘籍」删除字符串中不需要的字符
  12. Android:如何从堆栈中还原ProGuard混淆后的代码
  13. GO -- 一个经验
  14. SQL Server查询所有的表名、字段名、注释
  15. 开源遥感软件(未完待续)
  16. python力导向图_力导向 (Force-directed) 布局算法绘图(布点)的简单实现
  17. 文献阅读 | 利用体细胞的mtDNA的突变追踪细胞的分化命运
  18. 灯泡开关python
  19. 计算机科学的重要意义,论文开题报告计算机科学与技术的现代化运用,理论意义和现实意义,对现代社会的重要性,为什么要研究这个...
  20. Android之 Camera相机使用

热门文章

  1. string类的常用函数
  2. jitter 如何优化网络_网络推广如何做好网站SEO优化
  3. QT问题记录之warning: ‘xxx’ will be initialized after [-Wreorder]
  4. 安装rlwrap 的简单方法
  5. 2018-2019-1 20165219 实验三 实时系统
  6. Spring 事务与脏读、不可重复读、幻读
  7. java console 到文件
  8. 递归多线程实现前缀和
  9. gojs 部分功能实现
  10. asp.net cookie操作-添加cookie,添加键值,移除cookie,移除键值