綠(lǜ)色資源網:您(nín)身邊最放心的安(ān)全下載站! 最新軟件|熱門排(pái)行|軟件分類|軟件專題|廠商大全

綠色資源網

技術教程
您的位置:首頁硬件天地(dì) → 該內存不能為“read”的原(yuán)因是什麽

該內(nèi)存不(bú)能為“read”的原因(yīn)是(shì)什麽

我要(yào)評論 2012/01/16 13:22:25 來源:綠色資源網 編輯:ynaad.com [大(dà) ] 評論:0 點擊:423次(cì)

該內存不能為“read”的原因是在是太多太多了,隻要是Windows係統,隻要是X86或者現(xiàn)在64位也(yě)不例外(wài),都會(huì)出現這種問題.這是一個BUG或者是(shì)文件(jiàn)錯誤導致.

該內存(cún)不能為“read”的原因是什(shí)麽_綠色資(zī)源網

運行某些(xiē)程序的時候,有時會出現內存(cún)錯誤的提示,然後該程序(xù)就關閉。

“0x????????”指令引用(yòng)的“0x????????”內存。該內存不能為“read”。

“0x????????”指令引用(yòng)的“0x????????”內存,該內存不能為“written”。

不知你出現(xiàn)過類似這樣的故障嗎?(0x後麵內容有可能(néng)不一樣。)

一般出(chū)現這個現(xiàn)象有方麵的,一是硬(yìng)件,即內存方麵有問題,二是軟件,這就有多方麵的問題了。

1、微軟IE緩衝溢出(chū)漏洞引起

2、內存或虛擬內存地(dì)址使用衝突造(zào)成

程序的運行需要分配一定的內存地(dì)址(zhǐ)給程序使(shǐ)用(yòng),當程序結束時釋(shì)放留出空間讓給新的程序使用,win是多任務(wù)的係統 有時前程序未結束 又(yòu)有新的任務開始 到底要(yào)多少內存或虛擬內存(cún)來保證我們同時運行的(de)工作任務呢?也(yě)許win在這個問題上沒弄好,所以(yǐ)有此(cǐ)錯誤常常(cháng)發生,一般運(yùn)行大型軟件或多媒體後出現這種情(qíng)況

3、劣質內存條也會出現這個問題

一般來說(shuō),內存出現(xiàn)問題的可能性並(bìng)不大,主要方(fāng)麵是:內存條(tiáo)壞了(le)、內存(cún)質量有問題,還有就是2個不同牌子不同容量的內(nèi)存混插(chā),也比較容易出現不兼容的情況,同時還要(yào)注意散熱問(wèn)題,特(tè)別是(shì)超頻後。你(nǐ)可以使用(yòng)MemTest 這個軟件來檢測一下內存,它可以徹底的(de)檢測(cè)出內存(cún)的穩定度。

假如你是雙內存,而且是不同品牌的內存條混插或者買了二手內存時(shí),出現這個問題,這(zhè)時,你就要檢查是不是內存出問(wèn)題了或者和其它硬件不(bú)兼容。

4、微軟WINDOWS係統的漏洞

windows把內存地址0X00000000到0X0000ffff指定為分配null指針的地址範圍,如果程序試(shì)圖訪問這一地址,則認為是錯誤。c/c++編寫的(de)程序(xù)通常不進行嚴格的錯誤檢(jiǎn)查,當(dāng)采(cǎi)用(yòng)malloc來分配內存而可(kě)供分配(pèi)的地址空(kōng)間不夠(gòu)的情(qíng)況下返回null指針。但是代碼不(bú)檢查這種錯(cuò)誤,認為地址分配已經(jīng)成(chéng)功,於(yú)是(shì)就訪問0X00000000的地址,於是就發生內存違規訪問,同時該進程被終止。

5、可能沒有完全正確安裝apache服務,且啟動了它的原故; 把服務中(zhōng)的 OracleOraHomeXXHTTPServer改成停止

6、應用程序沒有檢查內存分(fèn)配失敗(bài)

程序需要一塊內存用以保存數據時,就需要調用操作係統提供的“功能函(hán)數”來申請,如果內存分配成功,函數就會將所新開辟(pì)的內(nèi)存區地址返回給應用程序,應用程序就可以通過這個地址使用這(zhè)塊內存。這就是“動態內存分配”,內存地址也就是編程中的“指針”。

內存不是永遠都招之即來、用之不盡的,有時候內存分配也會失(shī)敗。當分配失敗時係統函數會返回一個0值,這時返(fǎn)回值“0”已不表示新(xīn)啟用的指針(zhēn),而(ér)是係統向應用程(chéng)序發出的一個(gè)通知,告知出現了錯誤。作為應用程序,在每一次(cì)申請內(nèi)存後都應該檢查返回值是否為0,如果是,則意味著出現了故障,應(yīng)該采取一些措施挽救,這就增強了程序的“健壯性”。

若應用程序沒(méi)有(yǒu)檢查這個錯誤(wù),它就會按照“思維慣性”認為這個值(zhí)是(shì)給它分配的可用指針,繼續在之後的運行中使用這塊內存。真正的0地址內存區保(bǎo)存的是計算機係統中最重要的“中斷描述符表”,絕對不允許應用程序使用(yòng)。在沒有(yǒu)保護機製的(de)操作係統下(xià)(如DOS),寫數(shù)據到這個地址會導致立即死機,而(ér)在健壯的(de)操作係統中,如Windows等,這個操作會馬上被係統的保(bǎo)護機製捕獲,其(qí)結果就是由操作係統強行關閉出錯(cuò)的應用程序,以防止其錯誤擴大。這時(shí)候,就會出現上述的“寫內存(cún)”錯誤(wù),並指出被(bèi)引用的內存地址為“0x00000000”。

內存(cún)分配失敗故(gù)障的原因(yīn)很多,內存不夠、係統函數的版本不匹配等都可能有影響。因此(cǐ),這種(zhǒng)分(fèn)配失敗(bài)多見於操作係(xì)統使用(yòng)很長時間後,安裝了多種應用程序(包括無意中“安裝”的病毒程序),更改(gǎi)了(le)大量的係統參數和係統文件之後。

7、應用程(chéng)序由於自身BUG引用了不正(zhèng)常的內存指針

在使用動(dòng)態分(fèn)配的(de)應(yīng)用程(chéng)序中,有時會(huì)有這樣的情況(kuàng)出現:程序試圖(tú)讀寫一塊“應該可用”的內存,但不知為什麽(me),這個預料中可用的指針已經失效了。有可能(néng)是“忘記了”向操作係統要求分配,也可能是程序自己在某個時候已經注銷了這(zhè)塊內(nèi)存(cún)而“沒有留意”等等(děng)。注銷了的(de)內存被係統回收,其訪問權已經不屬(shǔ)於該應用程序,因此讀寫操作也同樣會觸發(fā)係統的保護機製,企圖“違法”的程(chéng)序唯一(yī)的下場就是(shì)被操作終止運行,回收全(quán)部資源。計算機世界的法律(lǜ)還是要比人類有效和嚴厲得多啊(ā)!

像這(zhè)樣的情況都屬於程(chéng)序自身的BUG,你往往可在特定的操作順序下重現錯誤。無效指針不一定總是0,因此錯誤提示中的內存地址也(yě)不一定(dìng)為“0x00000000”,而是其他隨機數字。

關鍵詞:內存,read

閱讀本文(wén)後您有什麽感想? 已有 人給出評價!

  • 1 歡迎喜歡
  • 119 白癡
  • 1 拜托
  • 1 哇
  • 2 加油
  • 1 鄙視
免费人欧美成又黄又爽的视频丨一本色道久久88综合日韩精品丨国产专区日韩精品欧美色丨午夜无遮挡男女啪啪视频丨国产欧美日韩综合精品一区二区丨亚洲精品无码不卡在线播HE丨亚洲精品国产精品国自产观看丨日韩国产高清av不卡