出現(xiàn)這個現(xiàn)象有方面的,一是硬件,即內(nèi)存方面有問題,二是軟件,這就有多方面的問題了。
一:先說說硬件:
一般來說,電腦硬件是很不容易壞的。內(nèi)存出現(xiàn)問題的可能性并不大(除非你的內(nèi)存真的是雜牌的一塌徒地),主要方面是:1。內(nèi)存條壞了(二手內(nèi)存情況居多)、2。使用了有質(zhì)量問題的內(nèi)存,3。內(nèi)存插在主板上的金手指部分灰塵太多。4。使用不同品牌不同容量的內(nèi)存,從而出現(xiàn)不兼容的情況。5。超頻帶來的散熱問題。你可以使用memtest 這個軟件來檢測一下內(nèi)存,它可以徹底的檢測出內(nèi)存的穩(wěn)定度。
二、如果都沒有,那就從軟件方面排除故障了。
先說原理:內(nèi)存有個存放數(shù)據(jù)的地方叫緩沖區(qū),當程序把數(shù)據(jù)放在緩沖區(qū),需要操作系統(tǒng)提供的“功能函數(shù)”來申請,如果內(nèi)存分配成功,函數(shù)就會將所新開辟的內(nèi)存區(qū)地址返回給應(yīng)用程序,應(yīng)用程序就可以通過這個地址使用這塊內(nèi)存。這就是“動態(tài)內(nèi)存分配”,內(nèi)存地址也就是編程中的“光標”。內(nèi)存不是永遠都招之即來、用之不盡的,有時候內(nèi)存分配也會失敗。當分配失敗時系統(tǒng)函數(shù)會返回一個0值,這時返回值“0”已不表示新啟用的光標,而是系統(tǒng)向應(yīng)用程序發(fā)出的一個通知,告知出現(xiàn)了錯誤。作為應(yīng)用程序,在每一次申請內(nèi)存后都應(yīng)該檢查返回值是否為0,如果是,則意味著出現(xiàn)了故障,應(yīng)該采取一些措施挽救,這就增強了程序的“健壯性”。若應(yīng)用程序沒有檢查這個錯誤,它就會按照“思維慣性”認為這個值是給它分配的可用光標,繼續(xù)在之后的執(zhí)行中使用這塊內(nèi)存。真正的0地址內(nèi)存區(qū)儲存的是計算機系統(tǒng)中最重要的“中斷描述符表”,絕對不允許應(yīng)用程序使用。在沒有保護機制的操作系統(tǒng)下(如dos),寫數(shù)據(jù)到這個地址會導(dǎo)致立即當機,而在健壯的操作系統(tǒng)中,如windows等,這個操作會馬上被系統(tǒng)的保護機制捕獲,其結(jié)果就是由操作系統(tǒng)強行關(guān)閉出錯的應(yīng)用程序,以防止其錯誤擴大。這時候,就會出現(xiàn)上述的內(nèi)存不能為“read”錯誤,并指出被引用的內(nèi)存地址為“0x00000000“。內(nèi)存分配失敗故障的原因很多,內(nèi)存不夠、系統(tǒng)函數(shù)的版本不匹配等都可能有影響。因此,這種分配失敗多見于操作系統(tǒng)使用很長時間后,安裝了多種應(yīng)用程序(包括無意中“安裝”的病毒程序),更改了大量的系統(tǒng)參數(shù)和系統(tǒng)檔案之后。
在使用動態(tài)分配的應(yīng)用程序中,有時會有這樣的情況出現(xiàn):程序試圖讀寫一塊“應(yīng)該可用”的內(nèi)存,但不知為什么,這個預(yù)料中可用的光標已經(jīng)失效了。有可能是“忘記了”向操作系統(tǒng)要求分配,也可能是程序自己在某個時候已經(jīng)注銷了這塊內(nèi)存而“沒有留意”等等。注銷了的內(nèi)存被系統(tǒng)回收,其訪問權(quán)已經(jīng)不屬于該應(yīng)用程序,因此讀寫操作也同樣會觸發(fā)系統(tǒng)的保護機制,企圖“違法”的程序的下場就是被操作終止執(zhí)行,回收全部資源。計算機世界的法律還是要比人類有效和嚴厲得多?。∠襁@樣的情況都屬于程序自身的bug,你往往可在特定的操作順序下重現(xiàn)錯誤。無效光標不一定總是0,因此錯誤提示中的內(nèi)存地址也不一定為“0x00000000”,而是其它隨機數(shù)字。
首先考試大建議:
1、 檢查系統(tǒng)中是否有木馬或病毒。這類程序為了控制系統(tǒng)往往不負責任地修改系統(tǒng),從而導(dǎo)致操作系統(tǒng)異常。平常應(yīng)加強信息安全意識,對來源不明的可執(zhí)行程序絕不好奇。
2、 更新操作系統(tǒng),讓操作系統(tǒng)的安裝程序重新拷貝正確版本的系統(tǒng)檔案、修正系統(tǒng)參數(shù)。有時候操作系統(tǒng)本身也會有bug,要注意安裝官方發(fā)行的升級程序。
3、 盡量使用最新正式版本的應(yīng)用程序、beta版、試用版都會有bug。
4、 刪除然后重新創(chuàng)建 winntsystem32wbemrepository 文件夾中的文件:在桌面上右擊我的電腦,然后單擊管理。 在"服務(wù)和應(yīng)用程序"下,單擊服務(wù),然后關(guān)閉并停止 windows management instrumentation 服務(wù)。 刪除 winntsystem32wbemrepository 文件夾中的所有文件。(在刪除前請創(chuàng)建這些文件的備份副本。) 打開"服務(wù)和應(yīng)用程序",單擊服務(wù),然后打開并啟動 windows management instrumentation 服務(wù)。當服務(wù)重新啟動時,將基于以下注冊表項中所提供的信息重新創(chuàng)建這些文件: hkey_local_machinesoftwaremicrosoftwbemcimomautorecover mofs
下面考試大搜集幾個例子給大家分析:
例一:ie瀏覽器出現(xiàn)“0x0a8ba9ef”指令引用的“0x03713644” 內(nèi)存,或者“0x70dcf39f”指令引用的“0x00000000”內(nèi)存。該內(nèi)存不能為“read”。要終止程序,請單擊“確定”的信息框,單擊“確定”后,又出現(xiàn)“發(fā)生內(nèi)部錯誤,您正在使用的其中一個窗口即將關(guān)閉”的信息框,關(guān)閉該提示信息后,ie瀏覽器也被關(guān)閉。解決方法:
1、 開始-運行窗口,輸入“regsvr32 actxprxy.dll”回車,接著會出現(xiàn)一個信息對話 框“dllregisterserver in actxprxy.dll succeeded”,確定。再依次運行以下命令。(這個方法有人說沒必要,但重新注冊一下那些.dll對系統(tǒng)也沒有壞處,反正多方下手,能解決問題就行。)
regsvr32 shdocvw.dll
regsvr32 oleaut32.dll
regsvr32 actxprxy.dll
regsvr32 mshtml.dll
regsvr32 msjava.dll
regsvr32 browseui.dll
regsvr32 urlmon.dll
2、 修復(fù)或升級ie瀏覽器,同時打上系統(tǒng)補丁??催^其中一個修復(fù)方法是,把系統(tǒng)還原到系統(tǒng)初始的狀態(tài)下。建議將ie升級。
例二:有些應(yīng)用程序錯誤: “0x7cd64998” 指令參考的 “0x14c96730” 內(nèi)存。該內(nèi)存不能為 “read”。解決方法:win xp的“預(yù)讀取”技術(shù)這種化技術(shù)也被用到了應(yīng)用程序上,系統(tǒng)對每一個應(yīng)用程序的前幾次啟動情況進行分析,然后新增一個描述套用需求的虛擬“內(nèi)存映像”,并把這些信息儲存到windowsprefetch文件夾。一旦建立了映像,應(yīng)用軟件的裝入速度大大提高。xp的預(yù)讀取數(shù)據(jù)儲存了最近8次系統(tǒng)啟動或應(yīng)用軟件啟動的信息。建議將虛擬內(nèi)存撤換,刪除windowsprefetch目錄下所有*.pf文件,讓windows重新收集程序的物理地址。
例三:在xp下雙擊光盤里面的“autorun.exe”文件,顯示“0x77f745cc”指令引用的“0x00000078”內(nèi)存。該內(nèi)存不能為“written”,要終止程序,請單擊“確定”,而在windows 98里運行卻正常。 解決方法:這可能是系統(tǒng)的兼容性問題,winxp的系統(tǒng),右鍵“autorun.exe”文件,屬性,兼容性,把“用兼容模式運行這個程序”項選擇上,并選擇“windows 98/me”。win2000如果打了sp的補丁后,只要開始,運行,輸入:regsvr32 c:winntapppatchslayerui.dll。右鍵,屬性,也會出現(xiàn)兼容性的選項。
例四:realone gold關(guān)閉時出現(xiàn)錯誤,以前一直使用正常,最近卻在每次關(guān)閉時出現(xiàn)“0xffffffff”指令引用的“0xffffffff”內(nèi)存。該內(nèi)存不能為“read” 的提示。 解決方法:當使用的輸入法為微軟拼音輸入法2003,并且隱藏語言欄時(不隱藏時沒問題)關(guān)閉realone就會出現(xiàn)這個問題,因此在關(guān)閉realone之前可以顯示語言欄或者將任意其他輸入法作為當前輸入法來解決這個問題。
例五:考試大提示:豪杰超級解霸自從上網(wǎng)后就不能播放了,每次都提示“0x060692f6”(每次變化)指令引用的“0xff000011”內(nèi)存不能為“read”,終止程序請按確定。 解決方法:試試重裝豪杰超級解霸,如果重裝后還會,到官方網(wǎng)站下載相應(yīng)版本的補丁試試。還不行,只好換就用別的播放器試試了。
例六:雙擊一個游戲的快捷方式,“0x77f5cd0”指令引用“0xffffffff”內(nèi) 存,該內(nèi)存不能為“read” ,并且提示client.dat程序錯誤。解決方法:重裝顯卡的最新驅(qū)動程序,然后下載并且安裝directx9.0。
例七:一個朋友發(fā)信息過來,電腦便出現(xiàn)了錯誤信息:“0x772b548f”指令引用的“0x00303033”內(nèi)存,該內(nèi)存不能為“written”,然后qq自動下線,而再打開qq,發(fā)現(xiàn)了他發(fā)過來的十幾條的信息。 解決方法:這是對方利用qq的bug,發(fā)送特殊的代碼,做qq出錯,只要打上補丁或升級到最新版本,就沒事了。
通過上面的幾個例子,可以看出,出現(xiàn)故障的原因有好多種,在這里把以前提到或有可能發(fā)生的原因列個表,方便查閱:
原因 解決方法
1. 內(nèi)存條壞了 更換內(nèi)存條
2. 雙內(nèi)存不兼容 使用同品牌的內(nèi)存或只要一條內(nèi)存
3. 內(nèi)存質(zhì)量問題 更換內(nèi)存條
4. 散熱問題 加強機箱內(nèi)部的散熱
5. 內(nèi)存和主板沒插好或其他硬件不兼容 重插內(nèi)存或換個插槽
6. 硬盤有問題 更換硬盤
7. 驅(qū)動問題 重裝驅(qū)動,如果是新系統(tǒng),應(yīng)先安裝主板驅(qū)動
8. 軟件損壞 重裝軟件
9. 軟件有bug 打補丁或更新到最新版本
10 軟件和系統(tǒng)不兼容 給軟件打上補丁或是試試系統(tǒng)的兼容模式
11 軟件和軟件之間有沖突 如果最近安裝了什么新軟件,卸載了試試
12 軟件要使用其他相關(guān)的軟件有問題 重裝相關(guān)軟件,比如播放某一格式的文件時出錯,可能是這個文件的解碼器有問題
13 病毒問題 殺毒
14 殺毒軟件與系統(tǒng)或軟件相沖突 由于殺毒軟件是進入底層監(jiān)控系統(tǒng)的,可能與一些軟件相沖突,卸載試試
15 系統(tǒng)本身有問題 有時候操作系統(tǒng)本身也會有bug,要注意安裝官方發(fā)行的更新程序,象sp的補丁,打上.如果還不行,重裝系統(tǒng),或更換其他版本的系統(tǒng).
一:先說說硬件:
一般來說,電腦硬件是很不容易壞的。內(nèi)存出現(xiàn)問題的可能性并不大(除非你的內(nèi)存真的是雜牌的一塌徒地),主要方面是:1。內(nèi)存條壞了(二手內(nèi)存情況居多)、2。使用了有質(zhì)量問題的內(nèi)存,3。內(nèi)存插在主板上的金手指部分灰塵太多。4。使用不同品牌不同容量的內(nèi)存,從而出現(xiàn)不兼容的情況。5。超頻帶來的散熱問題。你可以使用memtest 這個軟件來檢測一下內(nèi)存,它可以徹底的檢測出內(nèi)存的穩(wěn)定度。
二、如果都沒有,那就從軟件方面排除故障了。
先說原理:內(nèi)存有個存放數(shù)據(jù)的地方叫緩沖區(qū),當程序把數(shù)據(jù)放在緩沖區(qū),需要操作系統(tǒng)提供的“功能函數(shù)”來申請,如果內(nèi)存分配成功,函數(shù)就會將所新開辟的內(nèi)存區(qū)地址返回給應(yīng)用程序,應(yīng)用程序就可以通過這個地址使用這塊內(nèi)存。這就是“動態(tài)內(nèi)存分配”,內(nèi)存地址也就是編程中的“光標”。內(nèi)存不是永遠都招之即來、用之不盡的,有時候內(nèi)存分配也會失敗。當分配失敗時系統(tǒng)函數(shù)會返回一個0值,這時返回值“0”已不表示新啟用的光標,而是系統(tǒng)向應(yīng)用程序發(fā)出的一個通知,告知出現(xiàn)了錯誤。作為應(yīng)用程序,在每一次申請內(nèi)存后都應(yīng)該檢查返回值是否為0,如果是,則意味著出現(xiàn)了故障,應(yīng)該采取一些措施挽救,這就增強了程序的“健壯性”。若應(yīng)用程序沒有檢查這個錯誤,它就會按照“思維慣性”認為這個值是給它分配的可用光標,繼續(xù)在之后的執(zhí)行中使用這塊內(nèi)存。真正的0地址內(nèi)存區(qū)儲存的是計算機系統(tǒng)中最重要的“中斷描述符表”,絕對不允許應(yīng)用程序使用。在沒有保護機制的操作系統(tǒng)下(如dos),寫數(shù)據(jù)到這個地址會導(dǎo)致立即當機,而在健壯的操作系統(tǒng)中,如windows等,這個操作會馬上被系統(tǒng)的保護機制捕獲,其結(jié)果就是由操作系統(tǒng)強行關(guān)閉出錯的應(yīng)用程序,以防止其錯誤擴大。這時候,就會出現(xiàn)上述的內(nèi)存不能為“read”錯誤,并指出被引用的內(nèi)存地址為“0x00000000“。內(nèi)存分配失敗故障的原因很多,內(nèi)存不夠、系統(tǒng)函數(shù)的版本不匹配等都可能有影響。因此,這種分配失敗多見于操作系統(tǒng)使用很長時間后,安裝了多種應(yīng)用程序(包括無意中“安裝”的病毒程序),更改了大量的系統(tǒng)參數(shù)和系統(tǒng)檔案之后。
在使用動態(tài)分配的應(yīng)用程序中,有時會有這樣的情況出現(xiàn):程序試圖讀寫一塊“應(yīng)該可用”的內(nèi)存,但不知為什么,這個預(yù)料中可用的光標已經(jīng)失效了。有可能是“忘記了”向操作系統(tǒng)要求分配,也可能是程序自己在某個時候已經(jīng)注銷了這塊內(nèi)存而“沒有留意”等等。注銷了的內(nèi)存被系統(tǒng)回收,其訪問權(quán)已經(jīng)不屬于該應(yīng)用程序,因此讀寫操作也同樣會觸發(fā)系統(tǒng)的保護機制,企圖“違法”的程序的下場就是被操作終止執(zhí)行,回收全部資源。計算機世界的法律還是要比人類有效和嚴厲得多?。∠襁@樣的情況都屬于程序自身的bug,你往往可在特定的操作順序下重現(xiàn)錯誤。無效光標不一定總是0,因此錯誤提示中的內(nèi)存地址也不一定為“0x00000000”,而是其它隨機數(shù)字。
首先考試大建議:
1、 檢查系統(tǒng)中是否有木馬或病毒。這類程序為了控制系統(tǒng)往往不負責任地修改系統(tǒng),從而導(dǎo)致操作系統(tǒng)異常。平常應(yīng)加強信息安全意識,對來源不明的可執(zhí)行程序絕不好奇。
2、 更新操作系統(tǒng),讓操作系統(tǒng)的安裝程序重新拷貝正確版本的系統(tǒng)檔案、修正系統(tǒng)參數(shù)。有時候操作系統(tǒng)本身也會有bug,要注意安裝官方發(fā)行的升級程序。
3、 盡量使用最新正式版本的應(yīng)用程序、beta版、試用版都會有bug。
4、 刪除然后重新創(chuàng)建 winntsystem32wbemrepository 文件夾中的文件:在桌面上右擊我的電腦,然后單擊管理。 在"服務(wù)和應(yīng)用程序"下,單擊服務(wù),然后關(guān)閉并停止 windows management instrumentation 服務(wù)。 刪除 winntsystem32wbemrepository 文件夾中的所有文件。(在刪除前請創(chuàng)建這些文件的備份副本。) 打開"服務(wù)和應(yīng)用程序",單擊服務(wù),然后打開并啟動 windows management instrumentation 服務(wù)。當服務(wù)重新啟動時,將基于以下注冊表項中所提供的信息重新創(chuàng)建這些文件: hkey_local_machinesoftwaremicrosoftwbemcimomautorecover mofs
下面考試大搜集幾個例子給大家分析:
例一:ie瀏覽器出現(xiàn)“0x0a8ba9ef”指令引用的“0x03713644” 內(nèi)存,或者“0x70dcf39f”指令引用的“0x00000000”內(nèi)存。該內(nèi)存不能為“read”。要終止程序,請單擊“確定”的信息框,單擊“確定”后,又出現(xiàn)“發(fā)生內(nèi)部錯誤,您正在使用的其中一個窗口即將關(guān)閉”的信息框,關(guān)閉該提示信息后,ie瀏覽器也被關(guān)閉。解決方法:
1、 開始-運行窗口,輸入“regsvr32 actxprxy.dll”回車,接著會出現(xiàn)一個信息對話 框“dllregisterserver in actxprxy.dll succeeded”,確定。再依次運行以下命令。(這個方法有人說沒必要,但重新注冊一下那些.dll對系統(tǒng)也沒有壞處,反正多方下手,能解決問題就行。)
regsvr32 shdocvw.dll
regsvr32 oleaut32.dll
regsvr32 actxprxy.dll
regsvr32 mshtml.dll
regsvr32 msjava.dll
regsvr32 browseui.dll
regsvr32 urlmon.dll
2、 修復(fù)或升級ie瀏覽器,同時打上系統(tǒng)補丁??催^其中一個修復(fù)方法是,把系統(tǒng)還原到系統(tǒng)初始的狀態(tài)下。建議將ie升級。
例二:有些應(yīng)用程序錯誤: “0x7cd64998” 指令參考的 “0x14c96730” 內(nèi)存。該內(nèi)存不能為 “read”。解決方法:win xp的“預(yù)讀取”技術(shù)這種化技術(shù)也被用到了應(yīng)用程序上,系統(tǒng)對每一個應(yīng)用程序的前幾次啟動情況進行分析,然后新增一個描述套用需求的虛擬“內(nèi)存映像”,并把這些信息儲存到windowsprefetch文件夾。一旦建立了映像,應(yīng)用軟件的裝入速度大大提高。xp的預(yù)讀取數(shù)據(jù)儲存了最近8次系統(tǒng)啟動或應(yīng)用軟件啟動的信息。建議將虛擬內(nèi)存撤換,刪除windowsprefetch目錄下所有*.pf文件,讓windows重新收集程序的物理地址。
例三:在xp下雙擊光盤里面的“autorun.exe”文件,顯示“0x77f745cc”指令引用的“0x00000078”內(nèi)存。該內(nèi)存不能為“written”,要終止程序,請單擊“確定”,而在windows 98里運行卻正常。 解決方法:這可能是系統(tǒng)的兼容性問題,winxp的系統(tǒng),右鍵“autorun.exe”文件,屬性,兼容性,把“用兼容模式運行這個程序”項選擇上,并選擇“windows 98/me”。win2000如果打了sp的補丁后,只要開始,運行,輸入:regsvr32 c:winntapppatchslayerui.dll。右鍵,屬性,也會出現(xiàn)兼容性的選項。
例四:realone gold關(guān)閉時出現(xiàn)錯誤,以前一直使用正常,最近卻在每次關(guān)閉時出現(xiàn)“0xffffffff”指令引用的“0xffffffff”內(nèi)存。該內(nèi)存不能為“read” 的提示。 解決方法:當使用的輸入法為微軟拼音輸入法2003,并且隱藏語言欄時(不隱藏時沒問題)關(guān)閉realone就會出現(xiàn)這個問題,因此在關(guān)閉realone之前可以顯示語言欄或者將任意其他輸入法作為當前輸入法來解決這個問題。
例五:考試大提示:豪杰超級解霸自從上網(wǎng)后就不能播放了,每次都提示“0x060692f6”(每次變化)指令引用的“0xff000011”內(nèi)存不能為“read”,終止程序請按確定。 解決方法:試試重裝豪杰超級解霸,如果重裝后還會,到官方網(wǎng)站下載相應(yīng)版本的補丁試試。還不行,只好換就用別的播放器試試了。
例六:雙擊一個游戲的快捷方式,“0x77f5cd0”指令引用“0xffffffff”內(nèi) 存,該內(nèi)存不能為“read” ,并且提示client.dat程序錯誤。解決方法:重裝顯卡的最新驅(qū)動程序,然后下載并且安裝directx9.0。
例七:一個朋友發(fā)信息過來,電腦便出現(xiàn)了錯誤信息:“0x772b548f”指令引用的“0x00303033”內(nèi)存,該內(nèi)存不能為“written”,然后qq自動下線,而再打開qq,發(fā)現(xiàn)了他發(fā)過來的十幾條的信息。 解決方法:這是對方利用qq的bug,發(fā)送特殊的代碼,做qq出錯,只要打上補丁或升級到最新版本,就沒事了。
通過上面的幾個例子,可以看出,出現(xiàn)故障的原因有好多種,在這里把以前提到或有可能發(fā)生的原因列個表,方便查閱:
原因 解決方法
1. 內(nèi)存條壞了 更換內(nèi)存條
2. 雙內(nèi)存不兼容 使用同品牌的內(nèi)存或只要一條內(nèi)存
3. 內(nèi)存質(zhì)量問題 更換內(nèi)存條
4. 散熱問題 加強機箱內(nèi)部的散熱
5. 內(nèi)存和主板沒插好或其他硬件不兼容 重插內(nèi)存或換個插槽
6. 硬盤有問題 更換硬盤
7. 驅(qū)動問題 重裝驅(qū)動,如果是新系統(tǒng),應(yīng)先安裝主板驅(qū)動
8. 軟件損壞 重裝軟件
9. 軟件有bug 打補丁或更新到最新版本
10 軟件和系統(tǒng)不兼容 給軟件打上補丁或是試試系統(tǒng)的兼容模式
11 軟件和軟件之間有沖突 如果最近安裝了什么新軟件,卸載了試試
12 軟件要使用其他相關(guān)的軟件有問題 重裝相關(guān)軟件,比如播放某一格式的文件時出錯,可能是這個文件的解碼器有問題
13 病毒問題 殺毒
14 殺毒軟件與系統(tǒng)或軟件相沖突 由于殺毒軟件是進入底層監(jiān)控系統(tǒng)的,可能與一些軟件相沖突,卸載試試
15 系統(tǒng)本身有問題 有時候操作系統(tǒng)本身也會有bug,要注意安裝官方發(fā)行的更新程序,象sp的補丁,打上.如果還不行,重裝系統(tǒng),或更換其他版本的系統(tǒng).