QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 1437|回复: 0
收起左侧

[分享] Windows系統出現內存錯誤不用慌

[复制链接]
发表于 2007-2-18 02:34:16 | 显示全部楼层 |阅读模式 来自: 中国台湾

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
使用Windows动作系统的人有时会遇到这样的错误讯息:“0X????????指令引用的0x00000000记忆体,该记忆体不能written”,然后套用程式被关闭。若果去请教一些“高手”,得到的回答往往是“Windows就是这样不稳定”之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。本文就来简单分析这种错误的常见原因。, r) w' Q+ @7 t
9 k. q4 s' W! J
  一、套用程式没有检查记忆体分配失败
3 ?0 ]; m5 j* M) }9 d8 k$ K, ]9 N, ]3 Q
  程式需要一块记忆体用以储存资料时,就需要呼叫动作系统提供的“功能函数”来申请,若果记忆体分配成功,函数就会将所新开辟的记忆体区位址返回给套用程式,套用程式就可以通过这个位址使用这块记忆体。这就是“动态记忆体分配”,记忆体位址也就是写程式中的“指标”。
: E  ]. m' i; \% ~0 Y7 h! I7 R' a3 z
; \3 F. K; S* N  记忆体不是永远都招之即来、用之不尽的,有时候记忆体分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的指标,而是系统向套用程式发出的一个知会,告知出现了错误。作为套用程式,在每一次申请记忆体后都应该检查返回值是否为0,若果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程式的“健壮性”。$ C6 N9 n! c7 W( k% l/ ?  m

4 G# M7 |' w3 \8 F; H  若套用程式没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用指标,继续在之后的执行中使用这块记忆体。真正的0位址记忆体区储存的是电脑系统中最重要的“中断描述符表”,绝对不容许套用程式使用。在没有保护机制的动作系统下(如DOS),写资料到这个位址会导致立即死机,而在健壮的动作系统中,如Windows等,这个动作会马上被系统的保护机制捕获,其结果就是由动作系统强行关闭出错的套用程式,以防止其错误扩大。这时候,就会出现上述的“写记忆体”错误,并指出被引用的记忆体位址为“0x00000000”。
; x( u* W8 e9 l- j- h/ _) f+ i$ @$ j+ G4 E( t0 G
  记忆体分配失败故障的原因很多,记忆体不够、系统函数的版本不符合等都可能有影响。因此,这种分配失败多见于动作系统使用很长时间后,安装了多种套用程式(内含无意中“安装”的病毒程式),变更了大量的系统参数和系统档案之后。
. i/ ~0 X* I5 G* {) F- u( v
7 a" M- B7 f, ]4 f" d  二、套用程式由于自身BUG引用了不标准的记忆体指标: e( N; f$ z! {, u$ ]5 s( ~* B
1 W: g! f# q7 N/ _( Q3 o
  在使用动态分配的套用程式中,有时会有这样的情况出现:程式试图读写一块“应该可用”的记忆体,但不知为什么,这个预料中可用的指标已经失效了。有可能是“忘记了”向动作系统要求分配,也可能是程式自己在某个时候已经注销了这块记忆体而“没有留意”等等。注销了的记忆体被系统回收,其访问权已经不属于该套用程式,因此读写动作也同样会触发系统的保护机制,企图“违法”的程式唯一的下场就是被动作终止执行,回收全部资源。电脑世界的法律还是要比人类有效和严厉得多啊!
* {+ j7 a5 p* t" f
/ j+ _: V& ^7 C4 F  像这样的情况都属于程式自身的BUG,你往往可在特定的动作顺序下重现错误。无效指标不一定总是0,因此错误提示中的记忆体位址也不一定为“0x00000000”,而是其他随机数字。
$ ]$ z' K, G  ]% _3 \) N2 v. z
  若果系统经常有所提到的错误提示,下面的建议可能会有帮助:
: R; N, D9 f* U# a) |( O; Z$ d2 O6 \* ]* _
  1.检视系统中是否有木马或病毒。这类程式为了控制系统往往不负责任地修改系统,从而导致动作系统异常。平常应加强讯息安全意识,对来源不明的可执行程式绝不好奇。1 f3 V, s9 ]# i5 T4 g6 p% a+ i
2 s( M. J8 g+ E% y: c, b& o
  2.更新动作系统,让动作系统的安装程式重新复制正确版本的系统档案、修正系统参数。有时候动作系统本身也会有BUG,要注意安装官方发行的升级程式。  {- [- A; @3 Z1 G6 n8 g" P
' _& Z; d4 {  B7 T+ w. m1 E/ z
  3.试用新版本的套用程式。
! e7 p! i+ \1 s: V! e( }  r
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表