有時候一運行軟件就彈窗:0x1000477b指令引用的內存不能為read,然后程序直接崩了,煩死了!特別是用IE或者開某些大軟件的時候,動不動就來一下。
這問題我之前也遇到過,總結下來可能有這么幾個原因:
1. IE有漏洞,尤其是老版本的,容易緩沖區溢出,趕緊升級補丁或者換瀏覽器;
2. 內存地址沖突,Windows是多任務系統,前一個程序還沒關,新的又來了,內存分配不過來就GG了;
3. 內存條有問題——比如兩條不同牌子、不同大小的混插,兼容性不好;或者用了雜牌/二手條子,質量不行;超頻了的話還要看散熱行不行。建議用MemTest跑個檢測,看看內存穩不穩;
4. 系統本身有坑,比如Windows把0x00000000到0x0000ffff這段地址設成禁區,程序不小心讀了就會報錯。尤其C/C++寫的程序沒做錯誤檢查,malloc失敗返回null還繼續用,直接炸;
5. PIF文件搞事:用ASCII字符填滿的假pif文件,只要超過369字節,點屬性就會崩潰,Explorer都扛不住,提示內存不能為read。改了特定16進制位置的數據也會出問題;
6. Apache或Oracle服務裝得不對,比如OracleOraHomeXXHTTPServer這種服務開著但配置不對,也可能引發內存報錯,建議去服務里把它停掉;
7. 程序自己沒做好內存管理,申請內存失敗也不檢查,一讀就崩。
解決辦法可以試試:
- 更新系統補丁
- 換瀏覽器(別再用老舊IE了)
- 別混插內存條,優先單條大容量
- 清理下虛擬內存,或者手動設置個固定值
- 跑MemTest測內存穩定性
- 關閉不必要的后臺服務,尤其是數據庫類的
- 重裝出問題的軟件
總之先軟后硬,一步步排查唄~
這問題我之前也遇到過,總結下來可能有這么幾個原因:
1. IE有漏洞,尤其是老版本的,容易緩沖區溢出,趕緊升級補丁或者換瀏覽器;
2. 內存地址沖突,Windows是多任務系統,前一個程序還沒關,新的又來了,內存分配不過來就GG了;
3. 內存條有問題——比如兩條不同牌子、不同大小的混插,兼容性不好;或者用了雜牌/二手條子,質量不行;超頻了的話還要看散熱行不行。建議用MemTest跑個檢測,看看內存穩不穩;
4. 系統本身有坑,比如Windows把0x00000000到0x0000ffff這段地址設成禁區,程序不小心讀了就會報錯。尤其C/C++寫的程序沒做錯誤檢查,malloc失敗返回null還繼續用,直接炸;
5. PIF文件搞事:用ASCII字符填滿的假pif文件,只要超過369字節,點屬性就會崩潰,Explorer都扛不住,提示內存不能為read。改了特定16進制位置的數據也會出問題;
6. Apache或Oracle服務裝得不對,比如OracleOraHomeXXHTTPServer這種服務開著但配置不對,也可能引發內存報錯,建議去服務里把它停掉;
7. 程序自己沒做好內存管理,申請內存失敗也不檢查,一讀就崩。
解決辦法可以試試:
- 更新系統補丁
- 換瀏覽器(別再用老舊IE了)
- 別混插內存條,優先單條大容量
- 清理下虛擬內存,或者手動設置個固定值
- 跑MemTest測內存穩定性
- 關閉不必要的后臺服務,尤其是數據庫類的
- 重裝出問題的軟件
總之先軟后硬,一步步排查唄~