相信經常運行Windows的網友,或多或少都曾遇到過這樣的錯誤信息:“0X”指令引用的“0x”內存,該內存不能為“read”。要終止程序,清單擊“確定”。 對此,筆者用最簡潔的文字說明成因,並提供成功實踐的相應對策如下——
壹、成因
系統提示“該內存不能為read”的成因很多,主要是:內存接觸不良;安裝論壇制作的“精簡版”系統造成系統函數不匹配;安裝不兼容軟件或者帶毒、帶插件軟件從而更改了系統參數和系統文件。
壹般來講,應用程序啟動特別是退出保存數據時,就要調用操作系統提供的“功能函數”進行申請。如果內存分配成功,函數就會將新開辟的內存區地址返回給應用程序,應用程序就可以通過這個地址使用相應內存。這就是“動態內存分配”,內存地址也就是編程中的“指針”。
但是,有時內存分配因為某種原因也會失敗。當分配失敗時系統函數就會返回壹個0值,這時返回值“0”已不表示新啟用的指針,而是系統向應用程序發出的壹個通知:妳的申請出現了錯誤!若應用程序沒有檢查到這個錯誤,就會按照“思維慣性”認為這個值就是給它分配的可用指針,繼續在此後的運行中使用它認為的“這塊內存”。
其實,真正的0地址內存區保存的是系統中最重要的“中斷描述符表”,絕對不允許應用程序使用。因而這個0地址操作會馬上被Windows系統的保護機制捕獲,其結果就是由操作系統強行關閉出錯的應用程序,以防止其錯誤擴大。這時候,就會出現上述的“寫內存”錯誤,並指出被引用的內存地址為“0x”。
二、對策
最基本應當做到:1。安裝運行微軟原版操作系統。2。定期清理內存“金手指”結合部。3。註意下載安裝軟件的科學性。4。定期全面、徹底查殺病毒、木馬。
——以下“命令”和“批處理”,是遇到異常時的最好補救措施(適用於XP和VISTA,兩種措施可二選壹):
1.在命令提示符中輸入以下命令後回車:
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
2。運行“批處理”程序。直接下載:
/bbs_upload/upload/2008/01_11/1200022352444.r
詳細參考/read.php?tid=857008&keyword=%B8%C3%C4%DA%B4%E6%B2%BB%C4%DC%CE%AAread
升級壹下IE到IE7也可以解決這個問題。