舉例說(shuō)明內(nèi)存不能為“Read”的7大原因 1 微軟 IE 緩沖溢出漏洞引起 2 內(nèi)存或虛擬內(nèi)存地址使用抵觸造成 順序的運(yùn)行需要分配一定的內(nèi)存地址給程序使用,當(dāng)順序結(jié)束時(shí)釋放留出空間讓給新的順序使用, win 多任務(wù)的系統(tǒng) 有時(shí)前程序未結(jié)束 又有新的任務(wù)開(kāi)始 底要多少內(nèi)存或虛擬內(nèi)存來(lái)保證我同時(shí)運(yùn)行的工作任務(wù)呢 ? 也許 win 這個(gè)問(wèn)題上沒(méi)弄好,所以有此錯(cuò)誤常常發(fā)生,一般運(yùn)行大型軟件或多媒體后出現(xiàn)這種情況 3 劣質(zhì)內(nèi)存條也會(huì)出現(xiàn)這個(gè)問(wèn)題 4 微軟 WINDOWS 系統(tǒng)的漏洞, window 把內(nèi)存地址 0X00000000 0X0000ffff 指定為分配 null 指針的地址范圍 , 如果順序試圖訪問(wèn)這一地址,則認(rèn)為是錯(cuò)誤。 c/c++ 編寫(xiě)的順序通常不進(jìn)行嚴(yán)格的錯(cuò)誤檢查,當(dāng)采用 malloc 來(lái)分配內(nèi)存而可供分配的地址空間不夠的情況下返回 null 指針。但是代碼不檢查這種錯(cuò)誤,認(rèn)為地址分配已經(jīng)勝利,于是就訪問(wèn) 0X00000000 地址,于是就發(fā)生內(nèi)存違規(guī)訪問(wèn),同時(shí)該進(jìn)程被終止。 ASCII 字符填充組成的 pif 文件時(shí)會(huì)出現(xiàn)以下情況: 一個(gè)非法的 pif 文件(用 ascii 字符 'x' 填充)至少要 369 字節(jié),系統(tǒng)才認(rèn)為是一個(gè)合法的 pif 文件,才會(huì)以 pif 圖標(biāo) [pifmgr.dll,0] 顯示,才會(huì)在屬性里有程序、 字體、內(nèi)存、屏幕 ” 等內(nèi)容。而且僅僅當(dāng)一個(gè)非 pif 文件的大小是 369 字節(jié)時(shí)察看屬性的順序 ” 頁(yè)時(shí),不會(huì)發(fā)生程序錯(cuò)誤,哪怕是 370 字節(jié)也不行。當(dāng)對(duì)一個(gè)大于 369 字節(jié)的非法 pif 文件觀察屬性的順序 ” 頁(yè)時(shí), Explorer 會(huì)出錯(cuò),提示: '***' 指令引用的 '***' 內(nèi)存。該內(nèi)存不能為 'read' 問(wèn)題出在 pif 文件的 16 進(jìn)制地址: 0x00000181[0x87]0x00000182[0x01] 和 0x00000231[0xC3]0x00000232[0x02] 即使是一個(gè)合法 pif 文件,只要改動(dòng)這四處的任意一處,也會(huì)引起程序錯(cuò)誤。而只 要把 0x00000181 和 0x00000182 值改為 [0xFF][0xFF] 那么其它地址任意更改 都不會(huì)引起錯(cuò)誤。 5 可能沒(méi)有完全正確裝置 apach 服務(wù),且啟動(dòng)了原故 ; 把服務(wù)中的 OracleOraHomeXXHTTPServ 改成停止 6 應(yīng)用順序沒(méi)有檢查內(nèi)存分配失敗 7 應(yīng)用順序由于自身 BUG 引用了不正常的內(nèi)存指針 像這樣的情況都屬于程序自身的 BUG 往往可在特定的操作順序下重現(xiàn)錯(cuò)誤。無(wú)效指針不一定總是 0 因此錯(cuò)誤提示中的內(nèi)存地址也不一定為 “ 0x00000000 而是其他隨機(jī)數(shù)字。 如果系統(tǒng)經(jīng)常有所提到錯(cuò)誤提示,下面的建議可能會(huì)有幫助: (1). 檢查系統(tǒng)中是否有木馬或病毒。這類(lèi)程序?yàn)榱丝刂葡到y(tǒng)往往不負(fù)責(zé)任地修改系統(tǒng),從而導(dǎo)致操作系統(tǒng)異常。平常應(yīng)加強(qiáng)信息安全意識(shí),對(duì)來(lái)源不明的可執(zhí)行程序絕不好奇。 (2). 更新操作系統(tǒng),讓操作系統(tǒng)的裝置順序重新拷貝正確版本的系統(tǒng)文件、修正系統(tǒng)參數(shù)。有時(shí)候操作系統(tǒng)自身也會(huì)有 BUG 要注意安裝官方發(fā)行的升級(jí)順序。 (3). 試用新版本的應(yīng)用順序。 (4 ) 刪除然后重新創(chuàng)立 Winnt\System32\Wbem\Repository 文件夾中的文件: 桌面上右擊我電腦,然后單擊管理。 " 服務(wù)和應(yīng)用程序 " 下,單擊服務(wù),然后關(guān)閉并停止 Windows Management Instrumentation 服務(wù)。 刪除 Winnt\System32\Wbem\Repository 文件夾中的所有文件。刪除前請(qǐng)創(chuàng)建這些文件的備份副本。 打開(kāi) " 服務(wù)和應(yīng)用程序 " 單擊服務(wù),然后打開(kāi)并啟動(dòng) Windows Management Instrumentation 服務(wù)。當(dāng)服務(wù)重新啟動(dòng)時(shí),將基于以下注冊(cè)表項(xiàng)中所提供的信息重新創(chuàng)建這些文件: HKEY_LOCA L_MA CHINE\SOFTWA RE\Microsoft\WBEM\CIMOM\A utorecover MOFs |
|
來(lái)自: 昵稱(chēng)QFAlq > 《我的圖書(shū)館》