QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
使用Windows动作系统的人有时会遇到这样的错误讯息:“0X????????指令引用的0x00000000记忆体,该记忆体不能written”,然后套用程式被关闭。若果去请教一些“高手”,得到的回答往往是“Windows就是这样不稳定”之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。本文就来简单分析这种错误的常见原因。
9 Q. ]3 O$ T" p5 k1 A) p* x0 T4 X& v, e
% d( O' G0 s+ X  一、套用程式没有检查记忆体分配失败
5 `; ~5 v* A* m2 T1 \- i$ X! d# P& R
  程式需要一块记忆体用以储存资料时,就需要呼叫动作系统提供的“功能函数”来申请,若果记忆体分配成功,函数就会将所新开辟的记忆体区位址返回给套用程式,套用程式就可以通过这个位址使用这块记忆体。这就是“动态记忆体分配”,记忆体位址也就是写程式中的“指标”。3 Q8 E4 y# b- j! E9 U' p+ h& F
; x% l  K6 V( J: x  Q, `" j
  记忆体不是永远都招之即来、用之不尽的,有时候记忆体分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的指标,而是系统向套用程式发出的一个知会,告知出现了错误。作为套用程式,在每一次申请记忆体后都应该检查返回值是否为0,若果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程式的“健壮性”。
# h1 ^0 \4 i6 R% @
/ ]; H* Q, I/ E$ ?. ]9 z  若套用程式没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用指标,继续在之后的执行中使用这块记忆体。真正的0位址记忆体区储存的是电脑系统中最重要的“中断描述符表”,绝对不容许套用程式使用。在没有保护机制的动作系统下(如DOS),写资料到这个位址会导致立即死机,而在健壮的动作系统中,如Windows等,这个动作会马上被系统的保护机制捕获,其结果就是由动作系统强行关闭出错的套用程式,以防止其错误扩大。这时候,就会出现上述的“写记忆体”错误,并指出被引用的记忆体位址为“0x00000000”。% h- m: a8 T( Y5 S3 o1 }6 s6 g- K

% G' z6 s  {3 D( v6 d  记忆体分配失败故障的原因很多,记忆体不够、系统函数的版本不符合等都可能有影响。因此,这种分配失败多见于动作系统使用很长时间后,安装了多种套用程式(内含无意中“安装”的病毒程式),变更了大量的系统参数和系统档案之后。
: E! f) J+ V$ D# i% s. j/ K8 A# a+ ?1 K4 s& w% u
  二、套用程式由于自身BUG引用了不标准的记忆体指标; U" l7 A  z: }
2 R; w- j7 k# q: ~) d
  在使用动态分配的套用程式中,有时会有这样的情况出现:程式试图读写一块“应该可用”的记忆体,但不知为什么,这个预料中可用的指标已经失效了。有可能是“忘记了”向动作系统要求分配,也可能是程式自己在某个时候已经注销了这块记忆体而“没有留意”等等。注销了的记忆体被系统回收,其访问权已经不属于该套用程式,因此读写动作也同样会触发系统的保护机制,企图“违法”的程式唯一的下场就是被动作终止执行,回收全部资源。电脑世界的法律还是要比人类有效和严厉得多啊!
5 k: S$ `, j5 L2 @
2 P; E3 _" H) t! M' @  像这样的情况都属于程式自身的BUG,你往往可在特定的动作顺序下重现错误。无效指标不一定总是0,因此错误提示中的记忆体位址也不一定为“0x00000000”,而是其他随机数字。
. Q% u, Q" R; k+ Z- L# {
0 r+ H% p  a3 E+ |) L0 x" r* C  K  若果系统经常有所提到的错误提示,下面的建议可能会有帮助:5 F& A8 q" g, F& f' E9 q0 y) ]/ a+ b
, L! A0 ~# J- V2 L# u
  1.检视系统中是否有木马或病毒。这类程式为了控制系统往往不负责任地修改系统,从而导致动作系统异常。平常应加强讯息安全意识,对来源不明的可执行程式绝不好奇。/ p' s. B3 j5 F* _8 B0 \/ H& D8 v, M
1 w8 x$ f9 V9 g5 h
  2.更新动作系统,让动作系统的安装程式重新复制正确版本的系统档案、修正系统参数。有时候动作系统本身也会有BUG,要注意安装官方发行的升级程式。
) U  }/ w5 T! q" ?& e2 @3 g3 z0 c% H. J
  3.试用新版本的套用程式。
( k8 [2 D8 G6 O0 U" r  F" R
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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