QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
使用Windows动作系统的人有时会遇到这样的错误讯息:“0X????????指令引用的0x00000000记忆体,该记忆体不能written”,然后套用程式被关闭。若果去请教一些“高手”,得到的回答往往是“Windows就是这样不稳定”之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。本文就来简单分析这种错误的常见原因。: i; t) X2 \$ }& d) ^( O0 H5 p) Y

* n( o" ?9 r  q4 ~  一、套用程式没有检查记忆体分配失败
8 u3 o" _9 L  Q2 X9 `) b  ]$ `, M7 h! r+ K: r* O" P' o& Q
  程式需要一块记忆体用以储存资料时,就需要呼叫动作系统提供的“功能函数”来申请,若果记忆体分配成功,函数就会将所新开辟的记忆体区位址返回给套用程式,套用程式就可以通过这个位址使用这块记忆体。这就是“动态记忆体分配”,记忆体位址也就是写程式中的“指标”。7 @! R1 Z1 l+ x

7 q( Y+ o: i* A  l5 A& X6 |  记忆体不是永远都招之即来、用之不尽的,有时候记忆体分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的指标,而是系统向套用程式发出的一个知会,告知出现了错误。作为套用程式,在每一次申请记忆体后都应该检查返回值是否为0,若果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程式的“健壮性”。
1 r+ ]& E# F6 ]+ [, z( F/ K
1 l7 \7 x. w- s9 M4 W% W9 d  若套用程式没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用指标,继续在之后的执行中使用这块记忆体。真正的0位址记忆体区储存的是电脑系统中最重要的“中断描述符表”,绝对不容许套用程式使用。在没有保护机制的动作系统下(如DOS),写资料到这个位址会导致立即死机,而在健壮的动作系统中,如Windows等,这个动作会马上被系统的保护机制捕获,其结果就是由动作系统强行关闭出错的套用程式,以防止其错误扩大。这时候,就会出现上述的“写记忆体”错误,并指出被引用的记忆体位址为“0x00000000”。' F, V& \8 r7 a8 f; Q

0 \# [5 T) T+ _- m" u: a  记忆体分配失败故障的原因很多,记忆体不够、系统函数的版本不符合等都可能有影响。因此,这种分配失败多见于动作系统使用很长时间后,安装了多种套用程式(内含无意中“安装”的病毒程式),变更了大量的系统参数和系统档案之后。2 `% B. e' k6 ~) |# h& T, d5 C
6 g8 A" ]+ d  e" s. n6 f! u9 k' r
  二、套用程式由于自身BUG引用了不标准的记忆体指标
( y$ n) _' ^8 F* I6 \" ]( f7 N9 H, t, U! l* X
  在使用动态分配的套用程式中,有时会有这样的情况出现:程式试图读写一块“应该可用”的记忆体,但不知为什么,这个预料中可用的指标已经失效了。有可能是“忘记了”向动作系统要求分配,也可能是程式自己在某个时候已经注销了这块记忆体而“没有留意”等等。注销了的记忆体被系统回收,其访问权已经不属于该套用程式,因此读写动作也同样会触发系统的保护机制,企图“违法”的程式唯一的下场就是被动作终止执行,回收全部资源。电脑世界的法律还是要比人类有效和严厉得多啊!* w3 `2 k" W0 ?$ |/ N

1 P" ^0 f* Z0 K5 `9 p  像这样的情况都属于程式自身的BUG,你往往可在特定的动作顺序下重现错误。无效指标不一定总是0,因此错误提示中的记忆体位址也不一定为“0x00000000”,而是其他随机数字。
8 Z, j3 s) C" S1 y9 I- J1 x
/ c* B, Q" a/ Z, ^1 o  若果系统经常有所提到的错误提示,下面的建议可能会有帮助:
8 c8 I/ Y% I! Z& ~1 s2 |9 K; |' x) o9 E$ h" J. b7 w! C/ e0 h( x
  1.检视系统中是否有木马或病毒。这类程式为了控制系统往往不负责任地修改系统,从而导致动作系统异常。平常应加强讯息安全意识,对来源不明的可执行程式绝不好奇。
" N" x4 r9 S% T" _/ K9 \0 B5 u# ^, f
  2.更新动作系统,让动作系统的安装程式重新复制正确版本的系统档案、修正系统参数。有时候动作系统本身也会有BUG,要注意安装官方发行的升级程式。( e9 m# @+ i$ E

  C, o. ?$ Q3 `  s0 A. ^, X- ^$ p5 \  3.试用新版本的套用程式。
9 Z- I* M: ]' t% x& m! E
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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