admin管理员组

文章数量:1530846

2024年7月1日发(作者:)

内存不能为read或written的解决方案(附个人经验)

1.检视系统中是否有木马或病毒。这类程序为了控制系统往往不

负责任地修改系统,

「“0X”指令的“0x00000000”内存,该内存不能为

“read”或“written”」,然后应用程序被封闭。

假如去请教一些「高手」,得到的回答往往是「Windows就是这

样不稳定」之类的义愤和不屑。实在,这个错误并不一定是Windows

不稳定造成的。本文就来简单分析这种错误的一般原因。

一、应用程序没有检查内存分配失败

程序需要一块内存用以储存数据时,就需要使用操纵系统提供的

「功能函数」来申请,假如内存分配成功,函数就会将所新开辟的内

存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内

存。这就是「动态内存分配」,内存地址也就是编程中的「光标」。

内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。

当分配失败时系统函数会返回一个0值,这时返回值「0」已不表示新

启用的游标,而是系统向应用程序发出的一个通知,告知出现了错误。

作为应用程序,在每一次申请内存后都应该检查返回值是否为0,假如

是,则意味着出现了故障,应该采取一些措施拯救,这就增强了程序

的「健壮性」。若应用程序没有检查这个错误,它就会按照「思维惯

性」以为这个值是给它分配的可用游标,继续在之后的执行中使用这

块内存。真正的0地址内存区储存的是计算机系统中最重要的「中断

描述符表」,绝对不答应应用程序使用。在没有保护机制的操纵系统

下(如DOS),写数据到这个地址会导致立即当机,而在健壮的操纵系

统中,如Windows等,这个操纵会马上被系统的保护机制捕捉,其结

果就是由操纵系统强行封闭出错的应用程序,以防止其错误扩大。这

时候,就会出现上述的「写内存」错误,并指出被的内存地址为

「0x00000000」。内存分配失败故障的原因很多,内存不够、系统

函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操纵

系统使用很长时间后,安装了多种应用程序(包括无意中「安装」的病

毒程序),更改了大量的系统参数和系统档案之后。

二、应用程序由于自身BUG了不正常的内存光标

在使用动态分配的应用程序中,有时会有这样的情况出现:程序

试突读写一块「应该可用」的内存,但不知为什么,这个预料中可用

的光标已经失效了。有可能是「忘记了」向操纵系统要求分配,也可

能是程序自己在某个时候已经注销了这块内存而「没有留意」等等。

注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读

写操纵也同样会触发系统的保护机制,企图「违法」的程序唯一的下

场就是被操纵终止执行,回收全部资源。计算机世界的法律还是要比

人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往

往可在特定的操纵顺序下重现错误。无效光标不一定总是0,因此错误

提示中的内存地址也不一定为「0x00000000」,而是其它随机数字。

假如系统经常有所提到的错误提示,下面的建议可能会有说明 :

1.检视系统中是否有木马或病毒。这类程序为了控制系统往往不

负责任地修改系统,

理想的人物不仅要在物质需要的满足上,还要在精神旨趣的满足

上得到表现。 —— 黑格尔

从而导致操纵系统异常。平常应加强信息安全意识,对来源不明

的可执行程序绝不好奇。

2.更新操纵系统,让操纵系统的安装程序重新拷贝正确版本的系

统档案、修正系统参数。

本文标签: 系统内存应用程序操纵分配