angelababy產檢 54歲關之琳 正妹女警郭采靈 高宇蓁泳裝照 裘莉小布離婚 最美女童金奎莉 12歲小學生女團 陳皓揚退學處分 林若亞密婚 陳金鋒引退 G20美女保鏢 巴西性感超模 最萌雙胞胎 豬哥亮臥病 荷蘭郵票辣模 網紅正妹Dora 校花級室友 正妹張香香 南韓主播韓申穎 年度模特兒貝拉 女神邵庭半裸 喬任梁死因 洪荒之力傅園慧 台大新女神吳怡德 邵雨薇爆整形 豬哥亮大腸癌 宅男女神拐拐 卡拉與女友分手 日本F奶女優優香 張景嵐素顏 魅力女神咖滋咪 辣模艾蜜莉 李棠華辭世 熊黛林閃嫁 2017連假攻略 徐若瑄老公負債 林可彤比基尼 火辣Clara 5歲嫁給好朋友 愛爾蘭 最美3胞胎 舒淇調養身體 正妹香菱Mandi超胸 肉感模特兒Barbie Ferreira 寶可夢比基尼 泰勒絲12億長腿 以色列女兵模特兒 性感西施妹莫棠予 祖克柏夫妻捐950億 HUAWEI Media Pad X2 3G/16G LTE雙卡7 吋可通話平板電腦 《黃金盾》浴廁水垢皂垢清潔劑 精靈咖啡館 謝和弦辣妻 青少年小姐系瀨七葉 乳暈保養淡化計畫 【村上正彥】金箔保養系列 小模家藏推車 艾杜紗高機能毛孔保水精華 塑身衣比較 維娜斯、瑪麗蓮、蘿琳亞 新鮮檔產列表
瀏覽次數:28871│推薦次數: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.
本網站已依台灣網站內容分級規定處理 | 常年法律顧問: 明沂律師事務所 陳以蓓律師