• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > Linux环境下段错误的产生原因及调试方法小结

Linux环境下段错误的产生原因及调试方法小结

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了linux环境,linux环境搭建,linux php环境搭建,在线linux环境,linux安装php环境等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决。

1. 段错误是什么

一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问了系统保护的内存地址、访问了只读的内存地址等等情况。这里贴一个对于“段错误”的准确定义(参考Answers.com):

A segmentation fault (often shortened to segfault) is a particular error condition that can occur during the operation of computer software. In short, a segmentation fault occurs when a program attempts to access a memory location that it is not allowed to access, or attempts to access a memory location in a way that is not allowed (e.g., attempts to write to a read-only location, or to overwrite part of the operating system). Systems based on processors like the Motorola 68000 tend to refer to these events as Address or Bus errors.

Segmentation is one approach to memory management and protection in the operating system. It has been superseded by paging for most purposes, but much of the terminology of segmentation is still used, "segmentation fault" being an example. Some operating systems still have segmentation at some logical level although paging is used as the main memory management policy.

On Unix-like operating systems, a process that accesses invalid memory receives the SIGSEGV signal. On Microsoft Windows, a process that accesses invalid memory receives the STATUS_ACCESS_VIOLATION exception.

2. 段错误产生的原因
2.1 访问不存在的内存地址
从输出看出,程序2.3收到SIGSEGV信号,触发段错误,并提示地址0x001
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Linux下C语言修改进程名称的方法
  • Linux环境下段错误的产生原因及调试方法小结

相关文章

  • 2017-05-28c++ 构造函数的初始化列表
  • 2017-05-28使用C语言求解扑克牌的顺子及n个骰子的点数问题
  • 2022-04-30进制详解:二进制、八进制和十六进制
  • 2017-05-28基于Turbo C(V2.0)编译错误信息的详细介绍
  • 2017-05-28C++实现获取IP、子网掩码、网关、DNS等本机网络参数的方法
  • 2017-05-28c语言与c++基础知识点(必看)
  • 2017-05-28c语言可变参数实现示例
  • 2017-05-28内核线程优先级设置的方法介绍
  • 2017-05-28C语言中将日期和时间以字符串格式输出的方法
  • 2017-05-28C语言中的const和free用法详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++ 十进制转换为二进制的实例代码
    • 基于C语言实现的扫雷游戏代码
    • C++中构造函数与析构函数的调用顺序详解
    • C++线程池的简单实现方法
    • 详谈C++何时需要定义赋值/复制构造函数
    • C++归并算法实例
    • C/C++中的mem函数和strcopy函数的区别和应用
    • 从txt中读入数据到数组中(fscanf)的实现代码
    • 使用VC6.0对C语言程序进行调试的基本手段分享
    • C++ boost::asio编程-域名解析详细介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有