相信很多兄弟都遇到過內存無法“讀取”的錯誤提示(比如之前在SP2下運行傳說中的霸王插件)。希望下面這篇文章能幫到妳。
在運行壹些程序時,有時會出現內存錯誤提示,然後程序就會關閉。
“0x”指令引用了“0x”內存。存儲器不能被“讀取”。
0x指令引用的0x內存,不能“寫入”。
以上情況相信大家都看到了,甚至說有網友因為不滿意這種頻繁的錯誤提示,反復重裝系統。相信普通用戶應該看不懂那些復雜的十六進制代碼。
造成這種現象的原因有很多。壹是硬件有問題,也就是內存,二是軟件有很多問題。
壹:先說硬件:
壹般來說,電腦硬件不容易壞。內存問題不太可能(除非妳的內存真的是壹堆雜牌),主要方面是:1。內存壞了(大多是二手內存),2。使用有質量問題的內存,3。插在主板上的內存金手指部分灰塵太多。4。使用不同品牌和容量的內存,導致不兼容。5。超頻導致的散熱問題。可以用軟件MemTest來檢查內存,可以徹底檢查內存的穩定性。
第二,如果沒有,則排除軟件故障。
先說原理:內存中有壹個用來存儲數據的地方叫緩沖區。當程序將數據放入緩沖區時,需要操作系統提供的“函數function”來應用。如果內存分配成功,函數會將新打開的內存區域的地址返回給應用程序,應用程序可以通過這個地址使用這個內存。這就是“動態內存分配”,內存地址也是編程中的“光標”。內存並不總是可用和取之不盡的,有時內存分配會失敗。當分配失敗時,系統函數將返回值0。此時,返回值“0”不再表示新啟用的光標,而是系統發送給應用程序的通知,表示發生了錯誤。作為應用程序,應該在每次內存應用後檢查返回值是否為0。如果是,則說明存在故障,需要采取壹些措施來挽救,增強了程序的“健壯性”。如果應用程序不檢查這個錯誤,它會認為這個值是根據“思維慣性”分配給它的可用遊標,並在後續執行中繼續使用這個內存。真正的0地址存儲區存儲的是計算機系統中最重要的“中斷描述符表”,是絕對不允許應用程序使用的。在壹個沒有保護機制的操作系統中(比如DOS),向這個地址寫數據會導致立即崩潰,而在壹個健壯的操作系統中,比如Windows,這個操作會立即被系統的保護機制捕獲,結果操作系統會強制關閉錯誤的應用程序,防止其錯誤擴大。此時會出現內存無法“讀取”的錯誤,指出引用的內存地址為“0x00000000”。內存分配失敗的原因有很多,比如內存不足,系統函數版本不匹配等。所以這種分配失敗多見於操作系統使用時間較長,安裝了多種應用程序(包括無意中“安裝”的病毒程序),大量更改系統參數和系統文件之後。
在使用動態分配的應用程序中,有時會發生這樣的情況,程序試圖讀寫壹個“應該可用”的內存,但是由於某種原因,預期的可用遊標失敗了。可能是“忘記”向操作系統要求分配,也可能是程序本身在某個時候取消了這個內存,“沒註意”等等。被註銷的內存被系統回收,其訪問權不再屬於應用程序,因此讀寫操作也會觸發系統的保護機制,而試圖“違法”的程序唯壹的最終結果就是被操作終止,收回所有資源。計算機世界的法則還是比人類有效和嚴厲得多!像這樣的情況屬於程序本身的BUG,妳經常可以在壹個特定的操作序列中重現錯誤。無效光標不壹定是0,所以錯誤提示中的內存地址不壹定是“0x00000000”,也可以是其他隨機數。
首先,建議:
1,檢查系統中是否有特洛伊木馬或病毒。這類程序為了控制系統,往往會不負責任地修改系統,導致操作系統異常。平時要加強信息安全意識,千萬不要對來源不明的可執行程序感到好奇。
2、更新操作系統,讓操作系統安裝程序復制正確版本的系統文件,修正系統參數。有時候操作系統本身也有bug,要註意安裝官方發布的升級程序。
3、盡量使用最新的正式版應用,Beta版,試用版都會有bug。
4.刪除並重新創建Winnt/System32/Wbem/Repository文件夾中的文件:右鍵單擊桌面上的“我的電腦”,然後單擊“管理”。在“服務和應用程序”下,單擊“服務”,然後關閉並停止Windows Management Instrumentation服務。刪除Winnt/System32/Wbem/Repository文件夾中的所有文件。(請在刪除之前備份這些文件。)打開服務和應用程序,單擊服務,然後打開並啟動Windows Management Instrumentation服務。當該服務重新啟動時,將根據以下註冊表項中提供的信息重新創建這些文件:HKEY _本地_機器/軟件/Microsoft/WBEM/CIMOM/autorecovermofs。