博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
段错误解决办法
阅读量:6691 次
发布时间:2019-06-25

本文共 702 字,大约阅读时间需要 2 分钟。

问题,再程序(vfork函数的使用)运行时,显示段错误。

网络解答:

  所谓的段就是指访问的超出了系统所给这个程序的内存空间,通常这个值是由gd tr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的 gdt表,后13位保存 相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在中的运行级别,指向 的gdt是由以64位为一个单位的表,在这张表中就保存着程序运行的以及的起 始地址以及与此相应的段限和页面交换还有程序运行级别还有内存粒度等等的信息。

    一旦一个程序发生了访问,就会产生相应的保护,于是segmentation fault就出现

了通过上面的解释,段应该就是访问了不可访问的,这个区要么是不存在的,

要么是受到系统保护的,还有可能是缺少文件或者文件损坏。

段错误的常见形式

在中以下几类做法容易导致段,基本上是错误地使用引起的。

1)访问系统数据区,尤其是往系统保护的写最常见就是给一个以0地址。

2)内存越界(越界,类型不一致等): 访问到不属于你的内存区域。

解决方法:我们在用C/语言写程序的时候,的绝大部分工作都是需要我们来做的。实际上,是一个比较繁琐的工作,无论你多高明,经验多丰富,难免会在此处犯些小,而通常这些错误又是那么的浅显而易于消除。但是手工“除虫”(debug),往往是效率低下且让人厌烦的,本文将就"段错误"这个内存访问的错误谈谈如何快速定位这些"段错误"的语句。

解决方案:因为vfork()创建子进程后严禁return,故需要用exit(0),成功。

转载于:https://www.cnblogs.com/msxk/p/4049248.html

你可能感兴趣的文章
微信公众号教程(6)公众平台开发模式介绍
查看>>
java 动态代理的学习详解
查看>>
核心动画(UIView封装动画)
查看>>
python之端午到了
查看>>
正则表达式
查看>>
TinyMCE下载及使用
查看>>
openstack instance resize
查看>>
Aix 文件名补齐及aix6.1 bash安装
查看>>
C编程技巧
查看>>
week5
查看>>
Unity3D常用网络框架与实战解析 学习
查看>>
继承(原型链继承)
查看>>
如何利用 Visual Studio 自定义项目或工程模板(转载)
查看>>
java.lang.Object底层代码分析-jdk1.8
查看>>
获取函数所在模块的方法
查看>>
Linux信号处理
查看>>
VS预定义宏
查看>>
QtTableView
查看>>
*****运维人员如何最大限度避免误删除文件?
查看>>
Android应用开发基础--Adapter
查看>>