發新話題

0x00000000 該記憶體不能為read 的解決方法!

上網找了一大堆文章,知識+更可以找到一堆

目前為止還沒有能100%處理的…

整理了三個處理建議及兩個情況

1、將C:\WINDOWS\Prefetch底下所有附檔名*.pf的全砍掉

2、調整虛擬記憶體,建議不要設定在系統磁碟機

在桌面上我的電腦按右鍵的內容->進階->設定->進階->變更->系統磁碟機(預設在C槽)選最下面沒有分頁檔案;隨便找另一個磁碟機,選自定大小,最小值電腦記憶體的1.5倍;最大值電腦記憶體的2.0~2.5倍

3、用記憶體管理軟體,在此推薦一個還不錯用的,按我

4、程式本身寫不好,總是占用到系統預設的記憶體,但就算是懂程式的人也不太容易修改,偏偏這還滿常遇到,真氣人!

5、中毒,會占記憶體,唯一的方法就是掃毒,並除去

[ 本帖最後由 kueilin694 於 2007-10-24 10:58 編輯 ]

TOP

以下是網路流傳的理論,坦白說還滿無聊的

使用Windows操作系統的人有時會遇到這樣的錯誤信息:「0X????????指令引用的0x00000000記憶體
該記憶體不能written」,然後應用程式被關閉
如果去請教一些「高手」,得到的回答往往是「Windows就是這樣不穩定」之類的義憤和不屑
一、應用程式沒有檢查記憶體分配失敗
程序需要一塊記憶體用以儲存資料時,就需要使用操作系統提供的「功能函數」來申請,
如果記憶體分配成功,函數就會將所新開闢的記憶體區位址返回給應用程式
應用程式就可以通過這個位址使用這塊記憶體。這就是「動態記憶體分配」
記憶體位址也就是編程中的「游標」
記憶體不是永遠都招之即來、用之不盡的,有時候記憶體分配也會失敗
當分配失敗時系統函數會返回一個0值,這時返回值「0」已不表示新啟用的游標
而是系統向應用程式發出的一個通知,告知出現了錯誤。作為應用程式
在每一次申請記憶體後都應該檢查返回值是否為0,如果是,則意味著出現了故障
應該採取一些措施挽救,這就增強了程序的「健壯性」
若應用程式沒有檢查這個錯誤,它就會按照「思維慣性」認為這個值是給它分配的可用游標
繼續在之後的執行中使用這塊記憶體
真正的0位址記憶體區儲存的是電腦系統中最重要的「中斷描述符表」,
絕對不允許應用程式使用。在沒有保護機制的操作系統下(如DOS),
寫資料到這個位址會導致立即當機,而在健壯的操作系統中,如Windows等,
這個操作會馬上被系統的保護機制捕獲,其結果就是由操作系統強行關閉出錯的應用程式,
以防止其錯誤擴大。這時候,就會出現上述的「寫記憶體」錯誤,
並指出被引用的記憶體位址為「0x00000000」。
記憶體分配失敗故障的原因很多,記憶體不夠、系統函數的版本不匹配等都可能有影響
因此,這種分配失敗多見於操作系統使用很長時間後,
安裝了多種應用程式(包括無意中「安裝」的病毒程序),更改了大量的系統參數和系統檔案之後

二、應用程式由於自身BUG引用了不正常的記憶體游標
在使用動態分配的應用程式中,有時會有這樣的情況出現:程序試突讀寫一塊「應該可用」的記憶體
但不知為什麼,這個預料中可用的游標已經失效了。有可能是「忘記了」向操作系統要求分配
也可能是程序自己在某個時候已經註銷了這塊記憶體而「沒有留意」等等。
註銷了的記憶體被系統回收,其訪問權已經不屬於該應用程式,
因此讀寫操作也同樣會觸發系統的保護機制,企圖「違法」的程序唯一的下場就是被操作終止執行,
回收全部資源。電腦世界的法律還是要比人類有效和嚴厲得多啊!
像這樣的情況都屬於程序自身的BUG,你往往可在特定的操作順序下重現錯誤
無效游標不一定總是0,因此錯誤提示中的記憶體位址也不一定為「0x00000000」,
如果系統經常有所提到的錯誤提示,下面的建議可能會有說明 :

Mode:將虛擬記憶體撤換
答案:目前為止是肯定的,也就是如在下次冷天到來時亦沒再發生,就代表這是主因
應用程式錯誤: "0x7cd64998" 指令參考的 "0x14c96730" 記憶體。該記憶體不能為 "read"

虛擬記憶體相對於實體記憶體而言,是一種作業系統運用的技術,將磁碟空間模擬成記憶體,使得在實體記憶體不足的系統上,也可執行需要記憶體較多的應用程式。通常 Windows 中會將虛擬記憶體的大小調整在實體記憶體的 2.5 倍。

虛擬記憶體在磁碟內是以「虛擬記憶體交換(置換)檔」存在,Windows 9X 系列中,是 win386.swp 這個檔案,而在 Windows 2000、Windows XP中,則是 pagefiles.sys 這個檔案。Windows 的「虛擬記憶體交換檔」就是拿一部分的硬碟空間來當作記憶體使用,先把一些記憶體中閒置太久的程式,丟到硬碟上,當有需要用到時程式或資料時再從硬碟 win386.swp 或 pagefiles.sys 裡叫回來。
  
如果要改變虛擬記憶體的存放位置,可從「磁碟機」方框內選擇要使用的磁碟。如果想要自己設定大小,可調整「起始大小(MB)」及「最大值(MB)」的方框,填入你想要的初始大小及可使用的最大值,一般最適合的檔案大小值,大約是電腦實體記憶體的 1.5-2 倍左右較合宜。例如:你有 128MB 的實體記憶體,虛擬記憶體最大就可以設為 128 的 1.5 倍,也就是 192MB(起始大小)及 256MB(最大值)是比較恰當的,既不會浪費空間,也不會小到影響系統效能。在調整完後按「設定」,之後重新開機即可。

TOP

大大
很詳盡的解說
我目前就會碰到這記憶體的問題

TOP

我遇到了這各問題
感謝大大提供方法

TOP

感謝您的分享,再次的謝謝.

TOP

這問題常常遇到
不知道有什麼解決的好辦法
來試一試

TOP

我常常遇到這個問題
一定要試試看
因為實在是很討厭

TOP

感謝大大細心的教學,讓我學到實用的

TOP

好東西,剛好之前有遇到這個問題,希望能徹底解決.感謝您的分享

TOP

qqqqqqqqqqqqqqqqqqq

qqqqqqqqqqqqqqqqqqqqqqq

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。