出現(xiàn)這情況有幾個(gè)原因,硬件和軟件都有可能。先說(shuō)硬件方面:
電腦硬件一般不容易壞,內(nèi)存出問(wèn)題的幾率也不大,除非你用的是雜牌內(nèi)存,或者二手貨。主要可能有以下幾種情況:1.內(nèi)存條壞了(特別是二手內(nèi)存常見(jiàn));2.用了質(zhì)量差的內(nèi)存;3.內(nèi)存金手指部分積灰嚴(yán)重;4.混插了不同品牌或容量的內(nèi)存導(dǎo)致不兼容;5.超頻后散熱不好,溫度太高影響穩(wěn)定性。你可以試試用MemTest這個(gè)軟件來(lái)檢測(cè)內(nèi)存,能比較全面地看出內(nèi)存穩(wěn)不穩(wěn)定。
如果硬件沒(méi)問(wèn)題,那就要從軟件來(lái)找原因了:
簡(jiǎn)單來(lái)說(shuō),內(nèi)存有個(gè)地方叫緩沖區(qū),程序運(yùn)行時(shí)會(huì)往這里放數(shù)據(jù)。操作系統(tǒng)提供了一些功能函數(shù)讓程序申請(qǐng)使用內(nèi)存。如果分配成功,系統(tǒng)就會(huì)把這塊內(nèi)存的地址返回給程序,程序就能用這塊內(nèi)存了,這個(gè)過(guò)程叫動(dòng)態(tài)內(nèi)存分配,那個(gè)地址也可以理解成編程里的光標(biāo)。
但內(nèi)存不是無(wú)限的,有時(shí)候也會(huì)分配失敗。當(dāng)失敗的時(shí)候,系統(tǒng)會(huì)返回一個(gè)0值,這時(shí)候的0不是代表可用的地址,而是告訴程序出錯(cuò)了。好的程序應(yīng)該在每次申請(qǐng)內(nèi)存后都檢查一下返回值是不是0,如果是的話就說(shuō)明有問(wèn)題,程序應(yīng)該做出處理,這樣程序才更穩(wěn)定。
但如果程序沒(méi)做這個(gè)檢查,它就會(huì)以為這個(gè)0地址是合法的,繼續(xù)用下去。但實(shí)際上,0地址這塊內(nèi)存存的是系統(tǒng)里最重要的中斷描述符表,應(yīng)用程序是不能碰的。在沒(méi)有保護(hù)機(jī)制的老系統(tǒng)上(比如DOS),一碰就直接死機(jī)。而在Windows這種現(xiàn)代系統(tǒng)里,系統(tǒng)會(huì)立刻把你這個(gè)出錯(cuò)的程序干掉,防止它繼續(xù)搞事。這時(shí)候你就會(huì)看到提示內(nèi)存不能為read,而且地址是0x00000000,其實(shí)就是告訴你用了不該用的地址。
造成內(nèi)存分配失敗的原因很多,比如內(nèi)存不夠、系統(tǒng)版本不對(duì)、軟件沖突啥的。這種情況通常出現(xiàn)在電腦用久了,裝了很多軟件(也可能不小心中了毒),改了很多系統(tǒng)設(shè)置之后更容易出現(xiàn)這些問(wèn)題。
你可以先清理下內(nèi)存條,擦干凈再插一遍,最好用單根內(nèi)存測(cè)試下。然后看看是不是軟件沖突或者中毒了,實(shí)在不行就重裝系統(tǒng)試試。
電腦硬件一般不容易壞,內(nèi)存出問(wèn)題的幾率也不大,除非你用的是雜牌內(nèi)存,或者二手貨。主要可能有以下幾種情況:1.內(nèi)存條壞了(特別是二手內(nèi)存常見(jiàn));2.用了質(zhì)量差的內(nèi)存;3.內(nèi)存金手指部分積灰嚴(yán)重;4.混插了不同品牌或容量的內(nèi)存導(dǎo)致不兼容;5.超頻后散熱不好,溫度太高影響穩(wěn)定性。你可以試試用MemTest這個(gè)軟件來(lái)檢測(cè)內(nèi)存,能比較全面地看出內(nèi)存穩(wěn)不穩(wěn)定。
如果硬件沒(méi)問(wèn)題,那就要從軟件來(lái)找原因了:
簡(jiǎn)單來(lái)說(shuō),內(nèi)存有個(gè)地方叫緩沖區(qū),程序運(yùn)行時(shí)會(huì)往這里放數(shù)據(jù)。操作系統(tǒng)提供了一些功能函數(shù)讓程序申請(qǐng)使用內(nèi)存。如果分配成功,系統(tǒng)就會(huì)把這塊內(nèi)存的地址返回給程序,程序就能用這塊內(nèi)存了,這個(gè)過(guò)程叫動(dòng)態(tài)內(nèi)存分配,那個(gè)地址也可以理解成編程里的光標(biāo)。
但內(nèi)存不是無(wú)限的,有時(shí)候也會(huì)分配失敗。當(dāng)失敗的時(shí)候,系統(tǒng)會(huì)返回一個(gè)0值,這時(shí)候的0不是代表可用的地址,而是告訴程序出錯(cuò)了。好的程序應(yīng)該在每次申請(qǐng)內(nèi)存后都檢查一下返回值是不是0,如果是的話就說(shuō)明有問(wèn)題,程序應(yīng)該做出處理,這樣程序才更穩(wěn)定。
但如果程序沒(méi)做這個(gè)檢查,它就會(huì)以為這個(gè)0地址是合法的,繼續(xù)用下去。但實(shí)際上,0地址這塊內(nèi)存存的是系統(tǒng)里最重要的中斷描述符表,應(yīng)用程序是不能碰的。在沒(méi)有保護(hù)機(jī)制的老系統(tǒng)上(比如DOS),一碰就直接死機(jī)。而在Windows這種現(xiàn)代系統(tǒng)里,系統(tǒng)會(huì)立刻把你這個(gè)出錯(cuò)的程序干掉,防止它繼續(xù)搞事。這時(shí)候你就會(huì)看到提示內(nèi)存不能為read,而且地址是0x00000000,其實(shí)就是告訴你用了不該用的地址。
造成內(nèi)存分配失敗的原因很多,比如內(nèi)存不夠、系統(tǒng)版本不對(duì)、軟件沖突啥的。這種情況通常出現(xiàn)在電腦用久了,裝了很多軟件(也可能不小心中了毒),改了很多系統(tǒng)設(shè)置之后更容易出現(xiàn)這些問(wèn)題。
你可以先清理下內(nèi)存條,擦干凈再插一遍,最好用單根內(nèi)存測(cè)試下。然后看看是不是軟件沖突或者中毒了,實(shí)在不行就重裝系統(tǒng)試試。
