为什么80%的码农都做不了架构师?>>>   

在本文中,您将了解如下知识:
1、“致命错误c0000005”是什么东西?
2、它在什么情况下会发生?
3、如何避免其发生?
----------------------------------------------

“致命错误c0000005”是什么东西?

在VFP6以上版本的错误处理机中,它有了识别异常的能力,它以变量“致命错误”来取代“异常”——这一操作系统的专用术语。

让我们先来学习一下预备知识:什么叫异常。

异常,是操作系统领域的一个专用术语,系统异常区别于系统中断,前者是直接由运行程序的执行所产生的情况。如下情况都会造成系统异常:内存访问侵犯、整数被零除、整数溢出、内存泄漏、浮点异常等。

如果您不认识c0000005,那么您一定认识它臭名昭著的“父亲”——在WIN95下发生的“致命错误:非法操作,系统已无法继续运行,请与软件供应商联系!”的消息。如果当时您的PC上装了VC或DELPHI,您便可以按下该信息框的“调试”按钮,接下来便会发现其向您展示的错误地址,通常情况下,起始地址往往是c0000005段,因为WINDOWS的结构化异常处理机驻留在那里。

这在当时泛滥一时,曾有人专门为此而编了个恶意笑话,用e-Mail的形式直接发给比尔.盖茨,具体的笑话内容我忘了,因为时间太久了。据说比尔.盖茨是在家中的电脑上看到这封邮件的,当时立即勃然大怒。

他随即下令微软的开发工具、办公软件和其它产品的升级版本都必须具有识别系统异常的能力。这样,当异常被产生时,内核态的错误陷阱处理程序便把处理权交给用户态的应用程序的错误处理程序,就减少了WIN95中的“非法操作”、WIN98中的“蓝屏假死机”出现的频率。

实际上微软是在把用户当猴耍。

还记得“朝三暮四”成语的原始意吗?喂猴的人要采用早三粒、晚四粒的方式饲养,猴子们不同意,当他向它们商量采用早四粒、晚三粒的饲养方式时,猴子们高兴地答应了。无论是核心态截获了系统异常,还是用户态截获了系统异常,其结果都是一样的。

从VB5、VFP6开始,它们具备了识别系统异常的能力。说到这里,我想起了论坛上一位网友曾经建议到:“要避免致命错误c0000005的出现,就使用VFP5.0开发,因为VFP5不会发生这样的错误”,如果真的是这样,我宁愿相信老子所说的“小国寡民”的倒退思想,遗憾的是,VFP5不具备识别异常的能力,当发生的异常被系统核心态截获时,情况会更糟,如果你是从WIN98开始接触电脑的,那么,你一定会对“蓝屏假死机”想象记忆犹新。

VC和DELPHI这两个工具,不但具有识别异常的能力,而且还具备控制异常的能力。这从表面上看起来似乎是件好事,但往往人们用不上,想想看,就连微软的开发大师们都没有能力很好地控制异常,何况是用户呢?

如果你认为“致命错误c0000005”只是VFP的“专利”的话,那么你可就大错特错了。只要是软件在操作系统中运行,它就会有异常现象产生的风险,由于用户态应用程序各自的错误捕获机不同,它的表现形式不同罢了。在VFP6和VFP7中,它表现为由“致命错误”变量+错误名称所组成的信息提示框。

对于VFP6以上版本而言,它有能力识别两种情况的异常:即内存访问侵犯和算术溢出。请注意,这里的“算术”可不是指你在VFP里编的算术程序,它是指系统核心态二进制的算术。

造成这两种情况的原因多种多样。

当年微软官方第一次对用户公开的解释过于草率了,他们认为:

“这并不是微软的错,更不是WINDOWS或VFP的错,而是WIN95WIN98用户使用了老版本的DCOM95DCOM98.DLL。”

现在,您知道了这完全就是愚民政策、掩人耳目!

到后来,VFP开发小组不得不承认其中相当一部分原因是自己的程序所造成的,于是,从SP3开始,“致命错误c0000005”得到了重视。

但是有一点大家应该知道,这并不完全是VFP的错。常常有网友说:即使我安装了SP5,这个问题依然存在。其实这便是VFP外部的原因了。

要想避免“致命错误c0000005”情况的发生,你需要做如下事:

1、安装SP(升级补丁)3版本以上;

2、确保用户的计算机不是兼容机;

3、确保用户的操作系统是正版的或者是完整的;

4、删掉计算机里不稳定的应用程序,如:测试版本的软件、王码五笔输入法等。

5、检查计算机的电流供应是否充足、稳定,打印机、复印机等外设不要与计算机连在同一电路上,计算机芯片是否老化,硬盘是否有坏道(具体请参看本人的《论FOX数据库的安全性》);

6、检查VCX及SCX文件中是否包含了非法属性。

7、向用户建议将操作系统升级到WIN2000+SP2或以上;

8、如果项目很大,请尽量说服客户实现专机专用。

转载于:https://my.oschina.net/tadcat/blog/147759

论 致命错误c0000005相关推荐

  1. 致命错误:异常代码=C0000005(这篇最详细,收藏之~)

    ,输入"联通",然后保存后关闭该文本,再重新开打,看到什么了? 是的,当年WIN2000操作系统的流行时,Visual Foxpro开发组并没有彻底改正语义分析器代码的漏洞. 好的 ...

  2. selenium+python自动抢购源码

    [python] view plain copyprint? 华为MATE10抢购源码,使用selenium+python+Chrome 大概流程: 1.按帐号生成多个线程开启浏览器 2.登陆帐号密码 ...

  3. awk: (FILENAME=- FNR=1) 致命错误: 试图访问字段 -2

    执行:awk '{print $(NF-2)}' aa.log 出现错误:awk: (FILENAME=aa.log FNR=1) 致命错误: 试图访问字段 -2 可能和aa.log中数据有关系: 改 ...

  4. 致命错误: zlib.h:没有那个文件或目录

    致命错误: zlib.h:没有那个文件或目录 下面这个错误是因为zlib包没有安装,安装后问题即可解决.但有一点请注意安装命令是:sudo apt-get install zlib1g-dev,而非s ...

  5. 相同命名空间相同类名的程序集间引发的致命错误

    错误描述: 客户端post后台方法,返回500错误:检查后发现是该后台方法其中一行代码引起的,注释掉就正常:注释后断点调试,进到相应位置取消该行代码注释继续运行报错:"尝试应用代码更改时发生 ...

  6. 致命错误: Python.h:没有那个文件或目录

    In file included from greenlet.c:5:0: greenlet.h:8:20: 致命错误: Python.h:没有那个文件或目录 编译中断. error: Setup s ...

  7. 这段时间Dot Text 老出错,实在没办法解决了,特来求助。[InvalidOperationException: 内部连接致命错误。]...

    用博客圆的代码搭建起来二频博客,这二个多月来频频出错.出错原因都是下面这个. 这看博客圆这段时间也经常出错,不知原因是否也一样. "/blog"应用程序中的服务器错误. 内部连接致 ...

  8. JVM致命错误日志(hs_err_pid.log)分析

    为什么80%的码农都做不了架构师?>>>    当jvm出现致命错误时,会生成一个错误文件 hs_err_pid<pid>.log,其中包括了导致jvm crash的重要 ...

  9. PHP严重致命错误处理:php Fatal error: Cannot redeclare clas

    2019独角兽企业重金招聘Python工程师标准>>> 1.错误类型:PHP致命错误 Error type: PHP Fatal error Fatal error: Cannot ...

最新文章

  1. 两个场景怎样合在一起_Spring AOP应用场景你还不知道?这篇一定要看
  2. linux下卸载 dev sd*下硬盘,Linux下硬盘操作解析
  3. ITK:翻译矢量图像
  4. VTK初始化New返回Null问题
  5. LING与HQL(三)
  6. OPENSTACK重装系统失败导致虚拟机状态为error
  7. linux man命令 0-8,Linux命令Man解释:SUDO(8):以root身份执行指令
  8. java 优势论文_【是时候升级java11了】 jdk11优势和jdk选择
  9. mysql text取出乱码_关于delphi2010读取MySQL数据库TEXT类型乱码的解决方案
  10. android设计简单计算器代码下载,简单计算器实例
  11. 获取用户的openid与遇到的errcode:40029与errcode:40125,errmsg
  12. PWM的基本原理及如何产生PWM
  13. iQOO刷鸿蒙系统,iQOO招募Android12 Beta版即将到来,网友:我想要鸿蒙系统!
  14. 牛客-kotori和糖果(哈斯图吗?)
  15. Redis(四):Key读写及过期策略
  16. java并发-ReentrantReadWriteLock读写锁
  17. 工作时间如何安排:集中注意力的方法
  18. 外卖项目06---套餐管理业务开发(移动端的后台代码编辑开发)
  19. composingBuild依赖统一管理实践
  20. 利用有限元数值模拟技术辅助静电场学习

热门文章

  1. strncasecmp与strcasecmp用法
  2. 关于K8s中Pod调度[选择器,指定节点,主机亲和性]方式和节点[coedon,drain,taint]标记的Demo
  3. networkx, 网络节点多个属性
  4. 查看Windows10系统版本的方法
  5. 为什么黑客不攻击支付宝?
  6. 基于MFC框架的学生信息管理系统/学生成绩管理系统(带有图形化界面)
  7. 网络安全特训之——网络信息安全攻防学习平台(基础关)
  8. php7安装(多个php版本共存)
  9. OpenGL---GLUT教程(三) GLUT窗口设置
  10. 计算机局域网切换,怎么进入别人电脑--局域网【详解】