正妹李京燕像周子瑜 太子妃升職記結局線上看 正妹直播棉花糖巨乳 周杰倫愛護狗仔 冰火心女孩張景嵐 美女科員廖庭瑩 台灣天才超絕美少女歐陽娜娜 路雨希野外全裸 雪碧雙手炫乳照 台版堀北真希張嘉庭 臧芮軒深蹲爆乳 S級正妹女大生李京燕 最正記者張硯卿 混血日模蘿拉 八卦天王吳宗憲 猴年吉祥話 蔡阿嘎譙黃安 福祿猴害網友驚呆 九頭身校花陳韻安 宅男女神辜莞允 捷運手扶梯靠右站是錯的! 台南災民捐助物資 106美腿校花何宛輿 全台賞櫻攻略懶人包 隱藏版小茉莉 琅琊榜結局線上看 最正主播房業涵 膠原蛋白功效總整理 年度10大甜點 送神清屯該如何處理 范冰冰頭條榜首 修杰楷真男人 劉詩詩婚紗照 永和正妹女警李敏維 胡歌女友林曉 地震提高5倍存活率! 四大生肖猴年犯太歲 警界郭雪芙 披薩正妹吳乙秦 CES 2016 蔡依林將閃婚? 吳于瑄靠北男友爆紅 維冠金龍大樓 人氣車模吳采臻 網路年貨促銷 畢書盡被討厭 只要我長大電影預告,售票開始 360無死角韓國美女Yurisa 最正男一賴雅妍 真人版晴子利善榛 台北必吃羊肉爐 人氣校花蔡瑞雪 玻尿酸保濕精華液 保濕精華液 bioflash 主題樂園門票 bioflash 旅遊票券優惠 溫泉券 芈月傳結局線上看 新鮮檔產列表
瀏覽次數:28462│推薦次數:0
【轉載】會出現記憶體不能為READ或written的原因
01550010
張貼時間:2006/05/17 08:32
使用Windows操作系統的人有時會遇到這樣的錯誤信息:「0X????????指令引用的0x00000000記憶體,該記憶體不能written」,然後應用程式被關閉。如果去請教一些「高手」,得到的回答往往是「Windows就是這樣不穩定」之類的義憤和不屑。其實,這個錯誤並不一定是Windows不穩定造成的。本文就來簡單分析這種錯誤的一般原因。

一、應用程式沒有檢查記憶體分配失敗

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

二、應用程式由於自身BUG引用了不正常的記憶體游標

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

1.檢視系統中是否有木馬或病毒。這類程序為了控制系統往往不負責任地修改系統,從而導致操作系統異常。平常應加強信息安全意識,對來源不明的可執行程序絕不好奇。
2.更新操作系統,讓操作系統的安裝程序重新拷貝正確版本的系統檔案、修正系統參數。有時候操作系統本身也會有BUG,要注意安裝官方發行的昇級程序。
3.試用新版本的應用程式。

Mode:將虛擬記憶體撤換

答案:目前為止是肯定的,也就是如在下次冷天到來時亦沒再發生,就代表這是主因追加:如果你用 Ghost 恢復 OS 後建議刪除WINDOWS\PREFETCH目錄下所有*.PF文件因為需讓windows重新收集程式的物理位址

有些應用程式錯誤: '0x7cd64998' 指令參考的 '0x14c96730' 記憶體。該記憶體不能為 'read'推論是此原因
源由:Win XP的「預讀取」技術
這種最佳化技術也被用到了應用軟體上,系統對每一個應用軟體的前幾次啟動情況進行分析,然後新增一個描述套用需求的虛擬「記憶體映像」,並把這些信息儲存到WINDOWSPREFETCH資料夾。一旦建立了映像,應用軟體的裝入速度大大提高。XP的預讀取資料儲存了最近8次系統啟動或應用軟體啟動的信息。

後敘:目前此方法亦是獨步網路的(其碼自己針對此問題查了許久),也是常見問題,原本幾乎每天睡前關閉軟體時一些程式都會發生...read...現在就沒發生了
0 0
引言回覆回應檢舉
   
01041363
張貼時間:2007/05/07 10:39

我曾經出現這樣的問題,可是不知道怎麼處理,你說的那些內容,我還是看不太懂耶,可以簡單的說明一下,可以解決的方法嗎,謝謝嚕~~~~~~~~^^'
0 0
引言回覆回應檢舉
00714254
張貼時間:2007/05/18 14:37
有可能是因為windows的問題~從新安裝後就不會發生了~不一定全都是記憶體的問題~!!'
0 0
引言回覆回應檢舉
00318573
張貼時間:2008/01/15 18:24
此問題,有人在軟體技術已經提出解決辦法了

重新登錄DLL 就OK。
'
0 0
引言回覆回應檢舉
 
線上求助企業合作社團合作刊登廣告隱私權保護愛逛街樂多日誌朋友圈外小優仕優仕網首頁
YouthWant 優仕網 since April, 2000. Copyright © Shinewant Tech. 2000-. All rights reserved.
本網站已依台灣網站內容分級規定處理 | 常年法律顧問: 明沂律師事務所 陳以蓓律師
x