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

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

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

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

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

解决方法:

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

micropython webrepl_4-5 MicroPython WebREPL 命令行交互环境设置-2 接入点模式

在这一节教程里我们将一起学习如何为NodeMCU在接入点模式下设置MicroPython网络命令行交互环境(以下简称: WebREPL)。所谓接入点模式就是NodeMCU可以建立WIFI网络供其他设备接入。如下图所示。ESP8266-NodeMCU接入点(Access Point)工作模式在开始设置WebREPL以前请确认您已经完…

基于XMPP实现的Openfire的配置安装+Android客户端的实现

http://blog.csdn.net/sky_monkey/article/details/9495571转载于:https://www.cnblogs.com/eustoma/p/4217028.html

lammps软件_Lammps模型构建的方法之一:组合模型构建

对于Lammps初学者,建模的方法主要有以下几种:1、在Lammps中自行建模,适合金属等简单的模型,如果遇到聚合物就比较麻烦了;2、通过第三方软件建模,例如:Matlab、Python、VMD、Material Studio(MS)…

MapReduce 编程实践:统计对象中的某些属性

文章目录1. 生成数据2. 编写实体类3. Mapper类4. Reducer类5. Driver类6. 运行参考书:《Hadoop大数据原理与应用》 相关文章:MapReduce 编程实践 1. 生成数据 超市消费者 数据: id, 时间,消费金额,会员/…

linux共享数据,使用Linux共享数据对象

Linux共享数据对象类似于windows中的动态链接库,其后缀通常为so.* (*为版本号),例如为我们所熟知的libpcap,它对应的文件为/usr/lib/libpcap.so。如果程序中使用了某共享数据对象文件,需要在链接时指定gcc的链接参数。如使用libpc…

pythonselenium提高爬虫效率_[编程经验] Python中使用selenium进行动态爬虫

Hello,大家好!停更了这么久,中间发生了很多事情,我的心情也发生了很大的变化,看着每天在增长的粉丝,实在不想就这么放弃了,所以以后我会尽量保持在一周一篇的进度,与大家分享我的学习…

超级签名源码_企业签名和超级签名有哪些区别?

我们知道iOS系统对于非App Store中的应用是有安装限制的,而App Store严格的审核机制又将许多APP拒之门外,这令不少开发者们郁闷不已。所以很多开发者们会选择苹果签名的方式,让自己的iOS APP可以不经过App Store就安装在用户的苹果手机上&…

2015-01-14

1.鞋子到了 2.网络一天没有好 3. 又吸烟了,难受 4. 单双杠:60 5. 洗澡:no 6. 仰卧起坐:100 7. 洗脚/刷牙 8.曾的车 9.老梁关世界 总结:今天还好吧,但我还是很想znn!! 转载于:https://www.cnblo…

天池 在线编程 到达终点

文章目录1. 题目2. 解题1. 题目 描述 A robot is located in a pair of integer coordinates (x, y). It must be moved to a location with another set of coordinates. Though the bot can move any number of times, it can only make the following two types of moves:…

python os函数_python os模块主要函数

使用python提供的os模块,对文件和目录进行操作,重命名文件,添加,删除,复制目录以及文件等。一、文件目录常用函数在进行文件和目录操作时,一般会用到以下几种操作。1、获得当前;路径在python中可…

第十七节(is-a 、is-like-a 、has-a,包和 import )

is - a 类与类之间的继承关系;is - like - a 类与接口之间的关系;has - a 关联关系; public class Animal{public void method01();}// 类与类之间的关系class Dog extends Animal{ // Dog is a Animal} /// public interface I{public void…

quartz获取开始结束时间_Springboot集成quartz

Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。本文描述在springboot 2.x环境下怎么集成quartz。一、添加quartz到项目中在pom.xml中加入 <dependency>特别注意application入口类的注解&#xff0c;这里一定…

linux 添加本地磁盘,XenServer如何添加本地存储

在一次测试中&#xff0c;发现本地有两块磁盘&#xff0c;但是只有一块磁盘在XenServer中显示出来&#xff0c;另外一块没有显示。本地只有一个Local storage。查询KB后&#xff0c;发现XenServer可以添加多块本地存储。详情&#xff0c;请见KB&#xff1a;CTX121313详细添加如…

流畅的Python 5. 函数

文章目录1. 函数对象2. 高阶函数3. 匿名函数4. 可调用函数5. 定位参数、仅限关键字参数6. 获取参数信息7. 函数注解8. 支持函数式编程的包1. 函数对象 def factorial(n):returns n! n的阶乘return 1 if n < 2 else n * factorial(n - 1)print(factorial(42)) print(factori…

python方向键键值_python字典键值对的添加和遍历方法

添加键值对 首先定义一个空字典 >>> dic{} 直接对字典中不存在的key进行赋值来添加 >>> dic[name]zhangsan >>> dic {name: zhangsan} 如果key或value都是变量也可以用这种方法 >>> keyage >>> value30 >>> dic[key]val…

无穷大正整数 python_python模块:数字处理

http://blog.csdn.net/pipisorry/article/details/37055183python数字处理简介数字类型python没有unsighed int&#xff1a;The Python int is an abstraction of an integer value, not a direct access to a fixed-byte-size integer.不过int还是当成sighed int处理的&#x…

linux主机基本情况,查看linux主机系统基本信息.pdf

查看linux 主机系统的基本信息一、 硬件信息1. CPUa. Cat /proc/cpuinfo例&#xff1a;[rootlinux victor]# cat /proc/cpuinfoprocessor : 0vendor_id : GenuineIntelcpu family : 6model : 13model name : Intel(R) Celeron(R) M processor 1.50GHzstepping : 8cpu MHz : 150…

LeetCode 1805. 字符串中不同整数的数目(哈希set)

文章目录1. 题目2. 解题1. 题目 给你一个字符串 word &#xff0c;该字符串由数字和小写英文字母组成。 请你用空格替换每个不是数字的字符。 例如&#xff0c;“a123bc34d8ef34” 将会变成 " 123 34 8 34" 。 注意&#xff0c;剩下的这些整数间至少要用一个空格隔…

Android线程之异步消息处理机制(二)——Message、Handler、MessageQueue和Looper

异步消息处理机制解析 Android中的异步消息处理主要有四个部分组成&#xff0c;Message、Handler、MessageQueue和Looper。 1、Message Message是在线程之间传递的消息&#xff0c;它可以在内部携带少量的信息&#xff0c;用于在不同线程之间交换数据。上个例子中就使用了Messa…

linux 树状结构图,linux下tree指令的用法, 树状图列出目录, 树状图逐级列出目录...

tree命令&#xff0c;主要功能是创建文件列表&#xff0c;将所有文件以树的形式列出来linux下的tree就比较强大了&#xff0c;但一般系统并不自带这个命令&#xff0c;需要手动下载安装,安装sudo apt install tree## or using yum# yum -y install tree语法tree[-aACdDfFgilnNp…