Linux下报错:Segmentation fault.

遇到的问题:程序在读文件之后,准备执行fclose(fp);时,出现了如下错误:
      Program received signal SIGSEGV, Segmentation fault.

解决方法:倒腾了好久,结果发现是一个小小的 & 在作祟。
      原来把read( f, buff, nFileSize )
      写成了read( f, &buff, nFileSize ),多了一个 & !

经验总结:

  1.关于段错误(Segmentation fault):
    所谓的段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个 48位的寄存器,其中的32位是保存由它指向  的gdt表,后13位保存相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运行级别,指向的gdt是由以64位为一个单位的表,在这张表中就  保存着程序运行的代码段以及数据段的起始地址以及与此相应的段限和页面交换还有程序运行级别还有内存粒度等等的信息。一旦一个程序发生了越界访问,cpu  就会产生相应的异常保护,于是segmentation fault就出现了。

  2.原因

    在编程中以下几类做法容易导致段错误,基本是错误地使用指针引起的:
  1)访问系统数据区,尤其是往系统保护的内存地址写数据,最常见就是给一个指针以0地址
  2)内存越界(数组越界,变量类型不一致等) 访问到不属于你的内存区域

  3)其他

    因此,需注意:
  ①定义了指针后记得初始化,在使用的时候记得判断是否为NULL
  ②在使用数组的时候是否被初始化,数组下标是否越界,数组元素是否存在等
  ③在变量处理的时候变量的格式控制是否合理等

  具体的解决方法可参考如下:

http://tech.diannaodian.com/dw/lin/2012/0604/180621.html

http://blog.csdn.net/love_gaohz/article/details/6597857

Linux下报错:Segmentation fault.

时间: 2024-08-06 02:48:26

Linux下报错:Segmentation fault.的相关文章

C3P0在linux下报错:Name or service not known

CentOS监视Tomcat当前命令行输出 tail -f .../apache-tomcat-x.x.x/logs/catalina.out C3P0在Linux下的主要错误内容 31-Jul-2014 14:14:43.072 INFO [localhost-startStop-1] com.mchange.v2.c3p0.impl.C3P0ImplUtils.generateVmId Failed to get local InetAddress for VMID. This is unl

ueditor百度富文本编辑器linux下报错: class path resource [config.json] cannot be resolved to absolute file path because it does not reside in the file system

具体报错信息如下 java.io.FileNotFoundException: class path resource [config.json] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/home/java/wcq-new-server/wcq/wcq-admin/target/wcq-admin.jar!/BOOT-INF/classes!

natca 报错Segmentation fault(coredump)

$ netca Oracle Net Services Configuration: JVMDG217: Dump Handler is Processing Signal 11 - Please Wait. JVMDG303: JVM Requesting Java core file JVMDG304: Java core file written to /u01/app/oracle/product/10.2.0/db_1/network/tools/javacore21130.14327

【MySQL案例】tpcc测试--执行tpcc_start报错Segmentation fault

原文链接地址:http://blog.csdn.net/jason_asia/article/details/41543947 [报错信息] 执行进行tpcc_start测试的时候遇到报错: tpcc_test.sh: line 12: 24509 Segmentationfault      ./tpcc_start [报错原因] 是由于重新安装了mysql软件,并且mysql的版本是不一样的,而tpcc是编译安装的,所以导致tpcc调用安装时编译的mysql lib库文件失败. [解决方法]

linux下报错:error while loading shared libraries

linux执行bin程序报: error while loading shared libraries:libncurses.so.5: cannot open shared object file: No such file or directory 解决方法: yum -y install libncurses.so.5 安装这个库之后有可能报: error while loading shared libraries:libstdc++so.6: cannot open shared ob

将windows上面的项目拷贝到Linux环境下报错不能够找到对应的表com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'puyang.ServiceType' doesn't exist

将一模一样的项目从win迁移到到linux上报错: 一开始还是以为是linux不能识别hql语句,查找资料发现是因为Liunx服务器上mysql是区分大小写的,而本地是不区分的如:代码是这样写的 @Entity@Table(name = "users") 数据库建的表名称是Users,那么就会出现以上异常. 将windows上面的项目拷贝到Linux环境下报错不能够找到对应的表com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExcepti

Mac下报错'WARN security.UserGroupInformation: PriviledgedActionException as:用户名...No such file or directory'的一种解决方法

Mac下使用IDEA远程连接Hadoop调试MapReduce程序,参考网上博客,总会出现如题报错,下面是我在mac下的一种解决办法,可以参考. 前期准备 如果想远程调试,需要做一些准备工作,简单罗列下. (1)在本地准备一份了hadoop(有博主直接从集群中copy一份),设置环境变量. # hadoop路径为具体路径export HADOOP_HOME=/Users/yangchaolin/hadoop2.6.0/hadoop-2.6.0-cdh5.14.0 (2)IDEA工程下,将本地ha

Android程序能够构建和运行,但是报以下报错,为什么?

安卓程序写完之后能够构建和运行,但是会报以下的错误.不知道原因为何?求大神解答. 网上说的是混淆编译的原因,不过程序没有开启混淆编译. Error:warning: Ignoring InnerClasses attribute for an anonymous inner class Error:(com.alipay.android.phone.mrpc.core.c) that doesn't come with an Error:associated EnclosingMethod at

js插件设置innerHTML时,在IE8下报错“未知运行时错误”

问题描述: 网站中使用了一个js插件,设置innerHTML时,在IE8下报错“未知运行时错误”: <div id=”divContainer”> <a name=”link”> -->报错处 第三方插件内容… </a> </div> 原因: 所设置的innerHTML的对象是一个<a>,是由于<a>的对象包容性的比较低,当浏览器运行这段脚本时,校验出了运行时错误. 解决方法: 将<a>标签替换为<div>