会出现记忆体不能为"READ"或"written"的原因

Home Home
引用 | 编辑 ilnan
2006-02-01 20:33
楼主
推文 x0
使用Windows操作系统的人有时会遇到这样的错误信息:「0X????????指令引用的0x00000000记忆体,
该记忆体不能written」,然后应用程式被关闭。
如果去请教一些「高手」,得到的回答往往是「Windows就是这样不稳定」之类的义愤和不屑。
其实,这个错误并不一定是Windows不稳定造成的。
本文就来简单分析这种错误的一般原因。


一、应用程式没有检查记忆体分配失败
程序需要一块记忆体用以储存资料时,就需要使用操作系统提供的「功能函数」来申请,
如果记忆体分配成功,函数就会将所新开辟的记忆体区位址返回给应用程式,
应用程式就可以通过这个位址使用这块记忆体。这就是「动态记忆体分配」,
记忆体位址也就是编程中的「游标」。
记忆体不是永远都招之即来、用之不尽的,有时候记忆体分配也会失败。
当分配失败时系统函数会返回一个0值,这时返回值「0」已不表示新启用的游标,
而是系统向应用程式发出的一个通知,告知出现了错误。作为应用程式,
在每一次申请记忆体后都应该检查返回值是否为0,如果是,则意味着出现了故障,
应该采取一些措施挽救,这就增强了程序的「健壮性」。
若应用程式没有检查这个错误,它就会按照「思维惯性」认为这个值是给它分配的可用游标,
继续在之后的执行中使用这块记忆体。
真正的0位址记忆体区储存的是电脑系统中最重要的「中断描述符表」,
绝对不允许应用程式使用。在没有保护 ..

访客只能看到部份内容,免费 加入会员



献花 x0
引用 | 编辑 spro2929
2006-02-01 21:17
1楼
  
又学到不少的知识,谢谢大大的分享

献花 x0
引用 | 编辑 ~风月~
2006-02-01 21:49
2楼
  
喔喔 感谢大大的分享,我也是有在用Ghost,虽然说出现的机率不大
可是当然是多多益善 ︿︿

献花 x0
引用 | 编辑 秋名最速传说
2006-02-05 07:14
3楼
  
不好意思喔 我比较笨 看了半天还是不太懂
如果一开机就出现「......0000000x0」记忆体不得为READ
那到底该怎么办呢?可以简单解释一下吗?update WINDOWS吗?

献花 x0
引用 | 编辑 小判
2006-08-28 08:11
4楼
  
下面是引用秋名最速传说于2006-02-5 07:14发表的 :
不好意思喔 我比较笨 看了半天还是不太懂
如果一开机就出现「......0000000x0」记忆体不得为READ
那到底该怎么办呢?可以简单解释一下吗?update WINDOWS吗?
那就是更改虚拟记忆体位置吧!
原本预设都在C槽
或许把她更改一下大小
或者移动到其他槽就会好

献花 x0
引用 | 编辑 p7331830
2008-01-30 14:10
5楼
  
最近刚好遇到这类的问题
感谢你那么用心发帖^^

献花 x0
引用 | 编辑 mist7839
2008-02-10 14:08
6楼
  
我也有
可是我找到的元凶是Spyware Doctor
她不只是我R6034的元凶~
也是不能READ的元凶之一吧...最少我电脑是这样....
有一样问题的可以先看看有没有Spyware Doctor~~
把他移除试试看吧...msvcr80.dall会移除不干净~
会使重新注册发生问题(R6034).处理方法


方法由此作者和其他大大的努力找出的.
:http://bbs.mychat.to/read.php?fid=351&tid=655680&page=1

献花 x0
引用 | 编辑 o19900108
2008-02-17 11:08
7楼
  
之前玩WW3常遇到这问题呢... 感谢大大替我上了一课!!!

献花 x0
引用 | 编辑 b19800817
2008-11-17 14:33
8楼
  
那该怎么办呢?要如何解决呢!感谢大大啰~~~

献花 x0
引用 | 编辑 benshaoxw
2008-11-17 14:42
9楼
  
以前我老是认为是内存条的问题 原来如此 这样的话
  要怎么搞才行了
是不是机器不兼容呢   表情

献花 x0
引用 | 编辑 3562389
2010-03-19 17:28
10楼
  
谢谢大大无私分享
小弟又学到新知识了!!

献花 x0
引用 | 编辑 mrtt
2010-12-08 10:09
11楼
  
谢谢大大的分享 感恩

献花 x0
引用 | 编辑 l5723
2010-12-12 11:15
12楼
  
真是感谢大大的精辟解释~终于了解原因~ 表情

献花 x0