壹,造成內存不能為read的深層次原因
有些應用程序在啟動特別是退出保存數據時,需要調用操作系統提供的“功能函數”進行申請。如果內存分配成功,函數就會將新開辟的內存區地址返回給應用程序,應用程序就可以通過這個地址使用相應內存。這就是“動態內存分配”,內存地址也就是編程中的“指針”。
但由於某些原因,可能導致內存分配的失敗。當分配失敗時系統函數就會返回壹個0值,這時返回值“0”已不表示新啟用的指針,而是系統向應用程序提醒:妳的申請出現錯誤未能成功!若應用程序沒有檢查到這個錯誤,就會按照“思維慣性”認為這個值就是給它分配的可用指針,繼續在此後的運行中使用它認為的“這塊內存”。
然而,真正的0地址內存區保存的是系統中最重要的“中斷描述符表”,是不允許壹般應用程序使用的。應用程序試圖使用該0地址,會馬上被Windows系統的保護機制捕獲,而後由操作系統強行關閉出錯的應用程序,以防止其錯誤擴大。這時候,就會出現上述的“寫內存”錯誤,並指出被引用的內存地址為 “0x”。
如何避免內存不能為read?
1,安裝原汁原味的官方原版系統
推薦系統:XP SP3 | Windows7 SP1
2,不濫裝軟件,只安裝自己需要的軟件
推薦閱讀:關於軟件的選擇,安裝,設置,卸載的註意事項
3,使用壹段時間,建議定期清理內存的“金手指”結合部
4,安裝知名的殺毒軟件,定期查殺,減少感染病毒木馬的幾率
遇到內存不能為read的緊急補救措施:
在命令提示符(CMD)中輸入以下命令後回車:
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
通過運行以上命令可以將系統中所有的.dll文件重新註冊壹遍(大約需要3-5分鐘時間),從而解決當前的內存不能為read的故障。