QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
10天前
查看: 1442|回复: 0
收起左侧

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

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

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

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

x
使用Windows动作系统的人有时会遇到这样的错误讯息:“0X????????指令引用的0x00000000记忆体,该记忆体不能written”,然后套用程式被关闭。若果去请教一些“高手”,得到的回答往往是“Windows就是这样不稳定”之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。本文就来简单分析这种错误的常见原因。' ~2 d3 Z- n% m& }9 y/ Q" j

* }- a, C* C0 U, s- G, D( C  一、套用程式没有检查记忆体分配失败% }+ L! a8 ^# _/ c8 X5 m

) A+ s) }( d$ @2 o8 d  程式需要一块记忆体用以储存资料时,就需要呼叫动作系统提供的“功能函数”来申请,若果记忆体分配成功,函数就会将所新开辟的记忆体区位址返回给套用程式,套用程式就可以通过这个位址使用这块记忆体。这就是“动态记忆体分配”,记忆体位址也就是写程式中的“指标”。
- }$ B' U9 M5 p1 e! d/ k/ P% O# S; {, r( h. t) P
  记忆体不是永远都招之即来、用之不尽的,有时候记忆体分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的指标,而是系统向套用程式发出的一个知会,告知出现了错误。作为套用程式,在每一次申请记忆体后都应该检查返回值是否为0,若果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程式的“健壮性”。
! T8 Z0 [* u! U2 F( h
$ b, |) b& P$ N' P2 D7 f  若套用程式没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用指标,继续在之后的执行中使用这块记忆体。真正的0位址记忆体区储存的是电脑系统中最重要的“中断描述符表”,绝对不容许套用程式使用。在没有保护机制的动作系统下(如DOS),写资料到这个位址会导致立即死机,而在健壮的动作系统中,如Windows等,这个动作会马上被系统的保护机制捕获,其结果就是由动作系统强行关闭出错的套用程式,以防止其错误扩大。这时候,就会出现上述的“写记忆体”错误,并指出被引用的记忆体位址为“0x00000000”。
5 `0 R/ S2 \' ^- S! ]% J
  M" M, N  G) x  l8 G  记忆体分配失败故障的原因很多,记忆体不够、系统函数的版本不符合等都可能有影响。因此,这种分配失败多见于动作系统使用很长时间后,安装了多种套用程式(内含无意中“安装”的病毒程式),变更了大量的系统参数和系统档案之后。$ P) }8 T4 F% r7 x  _" c1 @. T

  }; L0 o! ?( k2 ]8 {  二、套用程式由于自身BUG引用了不标准的记忆体指标
9 f" i& _/ P) m8 ?! m
6 G' j( b$ ~' t: a, g3 I) M  在使用动态分配的套用程式中,有时会有这样的情况出现:程式试图读写一块“应该可用”的记忆体,但不知为什么,这个预料中可用的指标已经失效了。有可能是“忘记了”向动作系统要求分配,也可能是程式自己在某个时候已经注销了这块记忆体而“没有留意”等等。注销了的记忆体被系统回收,其访问权已经不属于该套用程式,因此读写动作也同样会触发系统的保护机制,企图“违法”的程式唯一的下场就是被动作终止执行,回收全部资源。电脑世界的法律还是要比人类有效和严厉得多啊!/ z$ y% p3 o8 D" O3 u
# B: N5 R0 [" \  f, j4 _7 s
  像这样的情况都属于程式自身的BUG,你往往可在特定的动作顺序下重现错误。无效指标不一定总是0,因此错误提示中的记忆体位址也不一定为“0x00000000”,而是其他随机数字。
+ t- Z  i% P; \% U( c1 i( s* t- d& E5 i$ {5 p( N  h' f
  若果系统经常有所提到的错误提示,下面的建议可能会有帮助:2 F3 s! g0 j; [$ M1 W! ?0 U

8 M+ h# J0 l5 j/ ]; d6 s  1.检视系统中是否有木马或病毒。这类程式为了控制系统往往不负责任地修改系统,从而导致动作系统异常。平常应加强讯息安全意识,对来源不明的可执行程式绝不好奇。" v& \: S) M; W- n$ Q

. e3 D4 s& e8 B3 ?  2.更新动作系统,让动作系统的安装程式重新复制正确版本的系统档案、修正系统参数。有时候动作系统本身也会有BUG,要注意安装官方发行的升级程式。7 [3 h& }% a1 \" I
0 W3 ~/ D" C5 X5 l! d) Q
  3.试用新版本的套用程式。
. |9 q: P6 U+ c- Q5 U3 W
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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