會出現記憶體不能為"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