先殺毒!如果不行!再仔細看一下吧!希望你會有所收獲!
該內(nèi)存不能read written常見原因
使用Windows操作系統(tǒng)的人有時會遇到這樣的錯誤信息:“0X????????指令引用的0x00000000內(nèi)存,該內(nèi)存不能written”,然后應用程序被關閉。如果去請教一些“高手”,得到的回答往往是“Windows就是這樣不穩(wěn)定”之類的義憤和不屑。其實,這個錯誤并不一定是Windows不穩(wěn)定造成的。本文就來簡單分析這種錯誤的常見原因。
一、應用程序沒有檢查內(nèi)存分配失敗
程序需要一塊內(nèi)存用以保存數(shù)據(jù)時,就需要調(diào)用操作系統(tǒng)提供的“功能函數(shù)”來申請,如果內(nèi)存分配成功,函數(shù)就會將所新開辟的內(nèi)存區(qū)地址返回給應用程序,應用程序就可以通過這個地址使用這塊內(nèi)存。這就是“動態(tài)內(nèi)存分配”,內(nèi)存地址也就是編程中的“指針”。
內(nèi)存不是永遠都招之即來、用之不盡的,有時候內(nèi)存分配也會失敗。當分配失敗時系統(tǒng)函數(shù)會返回一個0值,這時返回值“0”已不表示新啟用的指針,而是系統(tǒng)向應用程序發(fā)出的一個通知,告知出現(xiàn)了錯誤。作為應用程序,在每一次申請內(nèi)存后都應該檢查返回值是否為0,如果是,則意味著出現(xiàn)了故障,應該采取一些措施挽救,這就增強了程序的“健壯性”。
若應用程序沒有檢查這個錯誤,它就會按照“思維慣性”認為這個值是給它分配的可用指針,繼續(xù)在之后的運行中使用這塊內(nèi)存。真正的0地址內(nèi)存區(qū)保存的是計算機系統(tǒng)中最重要的“中斷描述符表”,絕對不允許應用程序使用。在沒有保護機制的操作系統(tǒng)下(如DOS),寫數(shù)據(jù)到這個地址會導致立即死機,而在健壯的操作系統(tǒng)中,如Windows等,這個操作會馬上被系統(tǒng)的保護機制捕獲,其結(jié)果就是由操作系統(tǒng)強行關閉出錯的應用程序,以防止其錯誤擴大。這時候,就會出現(xiàn)上述的“寫內(nèi)存”錯誤,并指出被引用的內(nèi)存地址為“0x00000000”。
內(nèi)存分配失敗故障的原因很多,內(nèi)存不夠、系統(tǒng)函數(shù)的版本不匹配等都可能有影響。因此,這種分配失敗多見于操作系統(tǒng)使用很長時間后,安裝了多種應用程序(包括無意中“安裝”的病毒程序),更改了大量的系統(tǒng)參數(shù)和系統(tǒng)文件之后。
二、應用程序由于自身BUG引用了不正常的內(nèi)存指針
在使用動態(tài)分配的應用程序中,有時會有這樣的情況出現(xiàn):程序試圖讀寫一塊“應該可用”的內(nèi)存,但不知為什么,這個預料中可用的指針已經(jīng)失效了。有可能是“忘記了”向操作系統(tǒng)要求分配,也可能是程序自己在某個時候已經(jīng)注銷了這塊內(nèi)存而“沒有留意”等等。注銷了的內(nèi)存被系統(tǒng)回收,其訪問權已經(jīng)不屬于該應用程序,因此讀寫操作也同樣會觸發(fā)系統(tǒng)的保護機制,企圖“違法”的程序唯一的下場就是被操作終止運行,回收全部資源。計算機世界的法律還是要比人類有效和嚴厲得多啊! 像這樣的情況都屬于程序自身的BUG,你往往可在特定的操作順序下重現(xiàn)錯誤。無效指針不一定總是0,因此錯誤提示中的內(nèi)存地址也不一定為“0x00000000”,而是其他隨機數(shù)字。
如果系統(tǒng)經(jīng)常有所提到的錯誤提示,下面的建議可能會有幫助:
1.查看系統(tǒng)中是否有木馬或病毒。這類程序為了控制系統(tǒng)往往不負責任地修改系統(tǒng),從而導致操作系統(tǒng)異常。平常應加強信息安全意識,對來源不明的可執(zhí)行程序絕不好奇。
2.更新操作系統(tǒng),讓操作系統(tǒng)的安裝程序重新拷貝正確版本的系統(tǒng)文件、修正系統(tǒng)參數(shù)。有時候操作系統(tǒng)本身也會有BUG,要注意安裝官方發(fā)行的升級程序。
3.試用新版本的應用程序。
運行某些程序的時候,有時會出現(xiàn)內(nèi)存錯誤的提示,然后該程序就關閉。
“0x????????”指令引用的“0x????????”內(nèi)存。該內(nèi)存不能為“read”。
“0x????????”指令引用的“0x????????”內(nèi)存,該內(nèi)存不能為“written”。
不知你出現(xiàn)過類似這樣的故障嗎?(0x后面內(nèi)容有可能不一樣。)
一般出現(xiàn)這個現(xiàn)象有方面的,一是硬件,即內(nèi)存方面有問題,二是軟件,這就有多方面的問題了。
下面先說說硬件:
一般來說,內(nèi)存出現(xiàn)問題的可能性并不大,主要方面是:內(nèi)存條壞了、內(nèi)存質(zhì)量有問題,還有就是2個不同牌子不同容量的內(nèi)存混插,也比較容易出現(xiàn)不兼容的情況,同時還要注意散熱問題,特別是超頻后。你可以使用MemTest 這個軟件來檢測一下內(nèi)存,它可以徹底的檢測出內(nèi)存的穩(wěn)定度。
假如你是雙內(nèi)存,而且是不同品牌的內(nèi)存條混插或者買了二手內(nèi)存時,出現(xiàn)這個問題,這時,你就要檢查是不是內(nèi)存出問題了或者和其它硬件不兼容。如果都沒有,那就從軟件方面排除故障了。
先簡單說說原理:內(nèi)存有個存放數(shù)據(jù)的地方叫緩沖區(qū),當程序把數(shù)據(jù)放在其一位置時,因為沒有足夠空間,就會發(fā)生溢出現(xiàn)象。舉個例子:一個桶子只能將一斤的水,當你放入兩斤的水進入時,就會溢出來。而系統(tǒng)則是在屏幕上表現(xiàn)出來。這個問題,經(jīng)常出現(xiàn)在windows2000和XP系統(tǒng)上,Windows 2000/XP對硬件的要求是很苛刻的,一旦遇到資源死鎖、溢出或者類似Windows 98里的非法操作,系統(tǒng)為保持穩(wěn)定,就會出現(xiàn)上述情況。另外也可能是硬件設備之間的兼容性不好造成的。
下面我從幾個例子給大家分析:
例一:打開IE瀏覽器或者沒過幾分鐘就會出現(xiàn)"0x70dcf39f"指令引用的"0x00000000"內(nèi)存。該內(nèi)存不能為“read”。要終止程序,請單擊“確定”的信息框,單擊“確定”后,又出現(xiàn)“發(fā)生內(nèi)部錯誤,您正在使用的其中一個窗口即將關閉”的信息框,關閉該提示信息后,IE瀏覽器也被關閉。 解決方法:修復或升級IE瀏覽器,同時打上補丁。看過其中一個修復方法是,Win2000自升級,也就是Win2000升級到Win2000,其實這種方法也就是把系統(tǒng)還原到系統(tǒng)初始的狀態(tài)下。比如你的IE升級到了6.0,自升級后,會被IE5.0代替。
例二:在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:\\winnt\\apppatch\\slayerui.dll。右鍵,屬性,也會出現(xiàn)兼容性的選項。
例三:RealOne Gold關閉時出現(xiàn)錯誤,以前一直使用正常,最近卻在每次關閉時出現(xiàn)“0xffffffff”指令引用的“0xffffffff”內(nèi)存。該內(nèi)存不能為“read” 的提示。 解決方法:當使用的輸入法為微軟拼音輸入法2003,并且隱藏語言欄時(不隱藏時沒問題)關閉RealOne就會出現(xiàn)這個問題,因此在關閉RealOne之前可以顯示語言欄或者將任意其他輸入法作為當前輸入法來解決這個問題。
例四:我的豪杰超級解霸自從上網(wǎng)后就不能播放了,每次都提示“Ox060692f6”(每次變化)指令引用的“Oxff000011”內(nèi)存不能為“read”,終止程序請按確定。 解決方法:試試重裝豪杰超級解霸,如果重裝后還會,到官方網(wǎng)站下載相應版本的補丁試試。還不行,只好換就用別的播放器試試了。
例五:雙擊一個游戲的快捷方式,“Ox77f5cdO”指令引用“Oxffffffff”內(nèi) 存,該內(nèi)存不能為“read” ,并且提示Client.dat程序錯誤。 解決方法:重裝顯卡的最新驅(qū)動程序,然后下載并且安裝DirectX9.0。
例六:一個朋友發(fā)信息過來,我的電腦便出現(xiàn)了錯誤信息:“0*772b548f”指令引用的“0*00303033”內(nèi)存,該內(nèi)存不能為“written”,然后QQ自動下線,而再打開QQ,發(fā)現(xiàn)了他發(fā)過來的十幾條的信息。 解決方法:這是對方利用QQ的BUG,發(fā)送特殊的代碼,做QQ出錯,只要打上補丁或升級到最新版本,就沒事了。
通過上面的幾個例子,可以看到,出現(xiàn)故障的原因有好多種,在這里把已經(jīng)提到和有可能發(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),要先安裝主板驅(qū)動
8、軟件損壞重裝軟件
9、軟件有BUG打補丁或用最新的版本。
10、軟件和系統(tǒng)不兼容給軟件打上補丁或者試試系統(tǒng)的兼容模式
11、軟件和軟件之間有沖突如果最近安裝了什么新軟件,卸載了試試
12、軟件要使用到其它相關的軟件有問題重裝相關軟件。比如播放某一格式的文件時出錯,可能是這個文件的解碼器有問題
13、病毒問題殺毒
14、殺毒軟件與系統(tǒng)或軟件沖突由于殺毒軟件是進入底層監(jiān)控系統(tǒng)的,可能與一些軟件沖突,卸載了試試
15、系統(tǒng)本身有問題有時候操作系統(tǒng)本身也會有BUG,要注意安裝官方發(fā)行的升級程序,像SP的補丁,最好要打上。如果還不行重裝系統(tǒng)或更換其它版本的系統(tǒng)了。
使用Windows出現(xiàn)藍色屏幕是經(jīng)常的事,而且每每因為不清楚錯誤的來源而頻繁重新安裝系統(tǒng),勞神費時。下列收集了一些windows死機密碼,供大家參考。
數(shù)值 敘述
0 0x0000 作業(yè)完成。
1 0x0001 不正確的函數(shù)。
2 0x0002 系統(tǒng)找不到指定的檔案。
3 0x0003 系統(tǒng)找不到指定的路徑。
4 0x0004 系統(tǒng)無法開啟檔案。
5 0x0005 拒絕存取。
6 0x0006 無效的代碼。
7 0x0007 儲存體控制區(qū)塊已毀。
8 0x0008 儲存體空間不足,無法處理這個指令。
9 0x0009 儲存體控制區(qū)塊位址無效。
10 0x000a 環(huán)境不正確。
11 0x000b 嘗試載入一個格式錯誤的程式。
12 0x000c 存取碼錯誤。
13 0x000d 資料錯誤。
14 0x000e 儲存體空間不夠,無法完成這項作業(yè)。
15 0x000f 系統(tǒng)找不到指定的磁碟機。
16 0x0010 無法移除目錄。
17 0x0011 系統(tǒng)無法將檔案移到 其他的磁碟機。
18 0x0012 沒有任何檔案。
19 0x0013 儲存媒體為防寫狀態(tài)。
20 0x0014 系統(tǒng)找不到指定的裝置。
21 0x0015 裝置尚未就緒。
22 0x0016 裝置無法識別指令。
23 0x0017 資料錯誤 (cyclic redundancy check)
24 0x0018 程式發(fā)出一個長 度錯誤的指令。
25 0x0019 磁碟機在磁碟找不到 持定的磁區(qū)或磁軌。
26 0x001a 指定的磁碟或磁片無法存取。
27 0x001b 磁碟機找不到要求的磁區(qū)。
28 0x001c 印表機沒有紙。
29 0x001d 系統(tǒng)無法將資料寫入指定的磁碟機。
30 0x001e 系統(tǒng)無法讀取指定的裝置。
31 0x001f 連接到系統(tǒng)的某個裝置沒有作用。
32 0x0020 the process cannot access the file because it is being used by another process.
33 0x0021 檔案的一部份被鎖定, 現(xiàn)在無法存取。
34 0x0022 磁碟機的磁片不正確。 請將 %2 (volume serial number: %3) 插入磁碟機 %1。
36 0x0024 開啟的分享檔案數(shù)量太多。
38 0x0026 到達檔案結(jié)尾。
39 0x0027 磁碟已滿。
50 0x0032 不支援這種網(wǎng)路要求。
51 0x0033 遠端電腦無法使用。
52 0x0034 網(wǎng)路名稱重復。
53 0x0035 網(wǎng)路路徑找不到。
54 0x0036 網(wǎng)路忙碌中。
55 0x0037 the specified network resource or device is no longer available.
56 0x0038 the network bios command limit has been reached.
57 0x0039 網(wǎng)路配接卡發(fā)生問題。
58 0x003a 指定的伺服器無法執(zhí)行要求的作業(yè)。
59 0x003b 網(wǎng)路發(fā)生意外錯誤。
60 0x003c 遠端配接卡不相容。
61 0x003d 印表機佇列已滿。
62 0x003e 伺服器的空間無法儲存等候列印的檔案。
63 0x003f 等候列印的檔案已經(jīng)刪除。
64 0x0040 指定的網(wǎng)路名稱無法使用。
65 0x0041 拒絕存取網(wǎng)路。
66 0x0042 網(wǎng)路資源類型錯誤。
67 0x0043 網(wǎng)路名稱找不到。
68 0x0044 超過區(qū)域電腦網(wǎng)路配接卡的名稱限制。
69 0x0045 超過網(wǎng)路 bios 作業(yè)階段的限制。
70 0x0046 遠端伺服器已經(jīng)暫停或者正在起始中。
71 0x0047 由于連線數(shù)目已達上限,此時無法再連線到這臺遠端電腦。
72 0x0048 指定的印表機或磁碟裝置已經(jīng)暫停作用。
80 0x0050 檔案已經(jīng)存在。
82 0x0052 無法建立目錄或檔案。
83 0x0053 int 24 失敗
84 0x0054 處理這項要求的儲存體無法使用。
85 0x0055 近端裝置名稱已經(jīng)在使用中。
86 0x0056 指定的網(wǎng)路密碼錯誤。
87 0x0057 參數(shù)錯誤。
88 0x0058 網(wǎng)路發(fā)生資料寫入錯誤。
89 0x0059 此時系統(tǒng)無法執(zhí)行其他行程。
100 0x0064 無法建立其他的系統(tǒng) semaphore。
101 0x0065 屬于其他行程專用的 semaphore 。
102 0x0066 semaphore 已經(jīng)設定,而且無法關閉。
103 0x0067 無法指定 semaphore 。
104 0x0068 在岔斷時間無法要求專用的 semaphore 。
105 0x0069 此 semaphore 先前的擁有權已經(jīng)結(jié)束。
106 0x006a 請將磁片插入 %1。
107 0x006b 因為代用的磁片尚未插入,所以程式已經(jīng)停止。
108 0x006c 磁碟正在使用中或被鎖定。
109 0x006d pipe 已經(jīng)中止。
110 0x006e 系統(tǒng)無法開啟指定的 裝置或檔案。
111 0x006f 檔名太長。
112 0x0070 磁碟空間不足。
113 0x0071 沒有可用的內(nèi)部檔案識別字。
114 0x0072 目標內(nèi)部檔案識別字不正確。
117 0x0075 由應用程式所執(zhí)行的 ioctl 呼叫 不正確。
118 0x0076 寫入驗證參數(shù)值不正確。
119 0x0077 系統(tǒng)不支援所要求的指令。
120 0x0078 此項功能僅在 win32 模式有效。
121 0x0079 semaphore 超過逾時期間。
122 0x007a 傳到系統(tǒng)呼叫的資料區(qū)域 太小。
123 0x007b 檔名、目錄名稱或儲存體標簽語法錯誤。
124 0x007c 系統(tǒng)呼叫層次不正確。
125 0x007d 磁碟沒有設定標簽。
126 0x007e 找不到指定的模組。
127 0x007f 找不到指定的程序。
128 0x0080 沒有子行程可供等待。
129 0x0081 %1 這個應用程式無法在 win32 模式下執(zhí)行。
130 0x0082 attempt to use a file handle to an open disk partition for an
operation other than raw disk i/o.
131 0x0083 嘗試將檔案指標移至檔案開頭之前。
132 0x0084 無法在指定的裝置或檔案,設定檔案指標。
133 0x0085 join 或 subst 指令 無法用于 內(nèi)含事先結(jié)合過的磁碟機。
134 0x0086 嘗試在已經(jīng)結(jié)合的磁碟機,使用 join 或 subst 指令。
135 0x0087 嘗試在已經(jīng)替換的磁碟機,使 用 join 或 subst 指令。
136 0x0088 系統(tǒng)嘗試刪除 未連結(jié)過的磁碟機的連結(jié)關系。
137 0x0089 系統(tǒng)嘗試刪除 未替換過的磁碟機的替換關系。
138 0x008a 系統(tǒng)嘗試將磁碟機結(jié)合到已經(jīng)結(jié)合過之磁碟機的目錄。
139 0x008b 系統(tǒng)嘗試將磁碟機替換成已經(jīng)替換過之磁碟機的目錄。
140 0x008c 系統(tǒng)嘗試將磁碟機替換成已經(jīng)替換過之磁碟機的目錄。
141 0x008d 系統(tǒng)嘗試將磁碟機 subst 成已結(jié)合的磁碟機 目錄。
142 0x008e 系統(tǒng)此刻無法執(zhí)行 join 或 subst。
143 0x008f 系統(tǒng)無法將磁碟機結(jié)合或替換同一磁碟機下目錄。
144 0x0090 這個目錄不是根目錄的子目錄。
145 0x0091 目錄仍有資料。
146 0x0092 指定的路徑已經(jīng)被替換過。
147 0x0093 資源不足,無法處理這項 指令。
148 0x0094 指定的路徑這時候無法使用。
149 0x0095 嘗試要結(jié)合或替換的磁碟機目錄,是已經(jīng)替換過的的目標。
150 0x0096 config.sys 檔未指定系統(tǒng)追蹤資訊,或是追蹤功能被取消。
151 0x0097 指定的 semaphore事件 dosmuxsemwait 數(shù)目不正確。
152 0x0098 dosmuxsemwait 沒有執(zhí)行;設定太多的 semaphore。
153 0x0099 dosmuxsemwait 清單不正確。
154 0x009a 您所輸入的儲存媒體標 元長度限制。
155 0x009b 無法建立其他的執(zhí)行緒。
156 0x009c 接收行程拒絕接受信號。
157 0x009d 區(qū)段已經(jīng)被舍棄,無法被鎖定。
158 0x009e 區(qū)段已經(jīng)解除鎖定。
159 0x009f 執(zhí)行緒識別碼的位址不正確。
160 0x00a0 傳到 dosexecpgm 的引數(shù)字串不正確。
161 0x00a1 指定的路徑不正確。
162 0x00a2 信號等候處理。
164 0x00a4 系統(tǒng)無法建立執(zhí)行緒。
167 0x00a7 無法鎖定檔案的部份范圍。
170 0x00aa 所要求的資源正在使用中。
173 0x00ad 取消范圍的鎖定要求不明顯。
174 0x00ae 檔案系統(tǒng)不支援自動變更鎖定類型。
180 0x00b4 系統(tǒng)發(fā)現(xiàn)不正確的區(qū)段號碼。
182 0x00b6 作業(yè)系統(tǒng)無法執(zhí)行 %1。
183 0x00b7 檔案已存在,無法建立同一檔案。
186 0x00ba 傳送的旗號錯誤。
187 0x00bb 指定的系統(tǒng)旗號找不到。
188 0x00bc 作業(yè)系統(tǒng)無法執(zhí)行 %1。
189 0x00bd 作業(yè)系統(tǒng)無法執(zhí)行 %1。
190 0x00be 作業(yè)系統(tǒng)無法執(zhí)行 %1。
191 0x00bf 無法在 win32 模式下執(zhí)行 %1。
192 0x00c0 作業(yè)系統(tǒng)無法執(zhí)行 %1。
193 0x00c1 %1 不是正確的 win32 應用程式。
194 0x00c2 作業(yè)系統(tǒng)無法執(zhí)行 %1。
195 0x00c3 作業(yè)系統(tǒng)無法執(zhí)行 %1。
196 0x00c4 作業(yè)系統(tǒng)無法執(zhí)行 這個應用程式。
197 0x00c5 作業(yè)系統(tǒng)目前無法執(zhí)行 這個應用程式。
198 0x00c6 作業(yè)系統(tǒng)無法執(zhí)行 %1。
199 0x00c7 作業(yè)系統(tǒng)無法執(zhí)行 這個應用程式。
200 0x00c8 程式碼的區(qū)段不可以大于或等于 64kb。
201 0x00c9 作業(yè)系統(tǒng)無法執(zhí)行 %1。
202 0x00ca 作業(yè)系統(tǒng)無法執(zhí)行 %1。
203 0x00cb 系統(tǒng)找不到輸入的環(huán)境選項。 \r
205 0x00cd 在指令子目錄下,沒有任何行程有信號副處理程式。
206 0x00ce 檔案名稱或副檔名太長。
207 0x00cf ring 2 堆疊使用中。
回答者: 我思故我問 - 高級經(jīng)理 六級 12-9 01:24
修改答復: 我思故我問,您要修改的答復如下: 積分規(guī)則 關閉
該內(nèi)存不能read written常見原因
使用Windows操作系統(tǒng)的人有時會遇到這樣的錯誤信息:“0X????????指令引用的0x00000000內(nèi)存,該內(nèi)存不能written”,然后應用程序被關閉。如果去請教一些“高手”,得到的回答往往是“Windows就是這樣不穩(wěn)定”之類的義憤和不屑。其實,這個錯誤并不一定是Windows不穩(wěn)定造成的。本文就來簡單分析這種錯誤的常見原因。
一、應用程序沒有檢查內(nèi)存分配失敗
程序需要一塊內(nèi)存用以保存數(shù)據(jù)時,就需要調(diào)用操作系統(tǒng)提供的“功能函數(shù)”來申請,如果內(nèi)存分配成功,函數(shù)就會將所新開辟的內(nèi)存區(qū)地址返回給應用程序,應用程序就可以通過這個地址使用這塊內(nèi)存。這就是“動態(tài)內(nèi)存分配”,內(nèi)存地址也就是編程中的“指針”。
內(nèi)存不是永遠都招之即來、用之不盡的,有時候內(nèi)存分配也會失敗。當分配失敗時系統(tǒng)函數(shù)會返回一個0值,這時返回值“0”已不表示新啟用的指針,而是系統(tǒng)向應用程序發(fā)出的一個通知,告知出現(xiàn)了錯誤。作為應用程序,在每一次申請內(nèi)存后都應該檢查返回值是否為0,如果是,則意味著出現(xiàn)了故障,應該采取一些措施挽救,這就增強了程序的“健壯性”。
若應用程序沒有檢查這個錯誤,它就會按照“思維慣性”認為這個值是給它分配的可用指針,繼續(xù)在之后的運行中使用這塊內(nèi)存。真正的0地址內(nèi)存區(qū)保存的是計算機系統(tǒng)中最重要的“中斷描述符表”,絕對不允許應用程序使用。在沒有保護機制的操作系統(tǒng)下(如DOS),寫數(shù)據(jù)到這個地址會導致立即死機,而在健壯的操作系統(tǒng)中,如Windows等,這個操作會馬上被系統(tǒng)的保護機制捕獲,其結(jié)果就是由操作系統(tǒng)強行關閉出錯的應用程序,以防止其錯誤擴大。這時候,就會出現(xiàn)上述的“寫內(nèi)存”錯誤,并指出被引用的內(nèi)存地址為“0x00000000”。
內(nèi)存分配失敗故障的原因很多,內(nèi)存不夠、系統(tǒng)函數(shù)的版本不匹配等都可能有影響。因此,這種分配失敗多見于操作系統(tǒng)使用很長時間后,安裝了多種應用程序(包括無意中“安裝”的病毒程序),更改了大量的系統(tǒng)參數(shù)和系統(tǒng)文件之后。
二、應用程序由于自身BUG引用了不正常的內(nèi)存指針
在使用動態(tài)分配的應用程序中,有時會有這樣的情況出現(xiàn):程序試圖讀寫一塊“應該可用”的內(nèi)存,但不知為什么,這個預料中可用的指針已經(jīng)失效了。有可能是“忘記了”向操作系統(tǒng)要求分配,也可能是程序自己在某個時候已經(jīng)注銷了這塊內(nèi)存而“沒有留意”等等。注銷了的內(nèi)存被系統(tǒng)回收,其訪問權已經(jīng)不屬于該應用程序,因此讀寫操作也同樣會觸發(fā)系統(tǒng)的保護機制,企圖“違法”的程序唯一的下場就是被操作終止運行,回收全部資源。計算機世界的法律還是要比人類有效和嚴厲得多啊! 像這樣的情況都屬于程序自身的BUG,你往往可在特定的操作順序下重現(xiàn)錯誤。無效指針不一定總是0,因此錯誤提示中的內(nèi)存地址也不一定為“0x00000000”,而是其他隨機數(shù)字。
如果系統(tǒng)經(jīng)常有所提到的錯誤提示,下面的建議可能會有幫助:
1.查看系統(tǒng)中是否有木馬或病毒。這類程序為了控制系統(tǒng)往往不負責任地修改系統(tǒng),從而導致操作系統(tǒng)異常。平常應加強信息安全意識,對來源不明的可執(zhí)行程序絕不好奇。
2.更新操作系統(tǒng),讓操作系統(tǒng)的安裝程序重新拷貝正確版本的系統(tǒng)文件、修正系統(tǒng)參數(shù)。有時候操作系統(tǒng)本身也會有BUG,要注意安裝官方發(fā)行的升級程序。
3.試用新版本的應用程序。
運行某些程序的時候,有時會出現(xiàn)內(nèi)存錯誤的提示,然后該程序就關閉。
“0x????????”指令引用的“0x????????”內(nèi)存。該內(nèi)存不能為“read”。
“0x????????”指令引用的“0x????????”內(nèi)存,該內(nèi)存不能為“written”。
不知你出現(xiàn)過類似這樣的故障嗎?(0x后面內(nèi)容有可能不一樣。)
一般出現(xiàn)這個現(xiàn)象有方面的,一是硬件,即內(nèi)存方面有問題,二是軟件,這就有多方面的問題了。
下面先說說硬件:
一般來說,內(nèi)存出現(xiàn)問題的可能性并不大,主要方面是:內(nèi)存條壞了、內(nèi)存質(zhì)量有問題,還有就是2個不同牌子不同容量的內(nèi)存混插,也比較容易出現(xiàn)不兼容的情況,同時還要注意散熱問題,特別是超頻后。你可以使用MemTest 這個軟件來檢測一下內(nèi)存,它可以徹底的檢測出內(nèi)存的穩(wěn)定度。
假如你是雙內(nèi)存,而且是不同品牌的內(nèi)存條混插或者買了二手內(nèi)存時,出現(xiàn)這個問題,這時,你就要檢查是不是內(nèi)存出問題了或者和其它硬件不兼容。如果都沒有,那就從軟件方面排除故障了。
先簡單說說原理:內(nèi)存有個存放數(shù)據(jù)的地方叫緩沖區(qū),當程序把數(shù)據(jù)放在其一位置時,因為沒有足夠空間,就會發(fā)生溢出現(xiàn)象。舉個例子:一個桶子只能將一斤的水,當你放入兩斤的水進入時,就會溢出來。而系統(tǒng)則是在屏幕上表現(xiàn)出來。這個問題,經(jīng)常出現(xiàn)在windows2000和XP系統(tǒng)上,Windows 2000/XP對硬件的要求是很苛刻的,一旦遇到資源死鎖、溢出或者類似Windows 98里的非法操作,系統(tǒng)為保持穩(wěn)定,就會出現(xiàn)上述情況。另外也可能是硬件設備之間的兼容性不好造成的。
下面我從幾個例子給大家分析:
例一:打開IE瀏覽器或者沒過幾分鐘就會出現(xiàn)"0x70dcf39f"指令引用的"0x00000000"內(nèi)存。該內(nèi)存不能為“read”。要終止程序,請單擊“確定”的信息框,單擊“確定”后,又出現(xiàn)“發(fā)生內(nèi)部錯誤,您正在使用的其中一個窗口即將關閉”的信息框,關閉該提示信息后,IE瀏覽器也被關閉。 解決方法:修復或升級IE瀏覽器,同時打上補丁。看過其中一個修復方法是,Win2000自升級,也就是Win2000升級到Win2000,其實這種方法也就是把系統(tǒng)還原到系統(tǒng)初始的狀態(tài)下。比如你的IE升級到了6.0,自升級后,會被IE5.0代替。
例二:在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:\\winnt\\apppatch\\slayerui.dll。右鍵,屬性,也會出現(xiàn)兼容性的選項。
例三:RealOne Gold關閉時出現(xiàn)錯誤,以前一直使用正常,最近卻在每次關閉時出現(xiàn)“0xffffffff”指令引用的“0xffffffff”內(nèi)存。該內(nèi)存不能為“read” 的提示。 解決方法:當使用的輸入法為微軟拼音輸入法2003,并且隱藏語言欄時(不隱藏時沒問題)關閉RealOne就會出現(xiàn)這個問題,因此在關閉RealOne之前可以顯示語言欄或者將任意其他輸入法作為當前輸入法來解決這個問題。
例四:我的豪杰超級解霸自從上網(wǎng)后就不能播放了,每次都提示“Ox060692f6”(每次變化)指令引用的“Oxff000011”內(nèi)存不能為“read”,終止程序請按確定。 解決方法:試試重裝豪杰超級解霸,如果重裝后還會,到官方網(wǎng)站下載相應版本的補丁試試。還不行,只好換就用別的播放器試試了。
例五:雙擊一個游戲的快捷方式,“Ox77f5cdO”指令引用“Oxffffffff”內(nèi) 存,該內(nèi)存不能為“read” ,并且提示Client.dat程序錯?/div>