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