這問題其實挺常見的,下面我簡單說說可能的原因和解決辦法,大家輕噴。
先說問題原因:
第一,程序沒檢查內(nèi)存申請有沒有成功。
咱們用的軟件要存數(shù)據(jù)的時候,就得跟系統(tǒng)申請一塊內(nèi)存。如果申請成功,系統(tǒng)就會給個地址,程序就拿這個地址來用。這就是所謂的動態(tài)內(nèi)存分配,那個地址也就是我們常說的指針。
但內(nèi)存不是無限的,有時候申請內(nèi)存會失敗。這時候系統(tǒng)會返回一個0,意思就是沒申請成功。這時候這個0不是指針,而是系統(tǒng)在提醒程序:哎,我沒法給你內(nèi)存了。
要是程序不檢查這個返回值,就默認繼續(xù)用這個0地址,那后面就會出問題。因為0地址這塊內(nèi)存是系統(tǒng)最重要的部分,應用程序是不能動的。
在老系統(tǒng)(比如DOS)里,亂動這塊內(nèi)存會直接死機;在現(xiàn)在的系統(tǒng)(比如Windows)里,系統(tǒng)會直接把你這個出錯的程序關掉,防止它搞崩潰整個系統(tǒng)。這時候就會提示寫內(nèi)存錯誤,地址是0x00000000。
這種情況一般是系統(tǒng)用久了,裝了一堆軟件(包括病毒),改了很多系統(tǒng)設置,導致內(nèi)存不夠或者系統(tǒng)函數(shù)版本不匹配。
第二,程序自己有BUG,用了無效的指針。
有時候程序想用一塊內(nèi)存,以為這地址是有效的,結果這地址其實早就被系統(tǒng)回收了。可能是程序忘了申請,也可能是之前釋放了這塊內(nèi)存但沒注意還在用。
一旦訪問已經(jīng)被系統(tǒng)回收的內(nèi)存,系統(tǒng)就會認為你在非法操作,直接把你程序干掉。這種情況下提示的錯誤地址不一定是0,而是別的隨機地址。
再說解決辦法:
1. 查病毒。
有些病毒亂改系統(tǒng)設置,會導致各種奇怪問題。用殺毒軟件掃一下,看看有沒有中招。
2. 系統(tǒng)修復或重裝。
如果系統(tǒng)文件被改亂了,可以試試系統(tǒng)還原,或者重新安裝系統(tǒng)。官方補丁也要記得打,有些系統(tǒng)BUG官方已經(jīng)修復了。
3. 更新軟件。
如果你用的是測試版或者試用版軟件,那出問題是正常的。盡量用穩(wěn)定版本,別貪新。
4. 檢查硬件。
如果剛重裝完系統(tǒng)就出問題,尤其是內(nèi)存錯誤,那可能是內(nèi)存條有問題。可以換條內(nèi)存試試。
總結這問題大部分是軟件引起的,但也不能完全排除硬件問題。先從軟件入手排查,實在不行再考慮硬件。希望對大家有幫助,有啥補充的歡迎評論區(qū)聊聊~
先說問題原因:
第一,程序沒檢查內(nèi)存申請有沒有成功。
咱們用的軟件要存數(shù)據(jù)的時候,就得跟系統(tǒng)申請一塊內(nèi)存。如果申請成功,系統(tǒng)就會給個地址,程序就拿這個地址來用。這就是所謂的動態(tài)內(nèi)存分配,那個地址也就是我們常說的指針。
但內(nèi)存不是無限的,有時候申請內(nèi)存會失敗。這時候系統(tǒng)會返回一個0,意思就是沒申請成功。這時候這個0不是指針,而是系統(tǒng)在提醒程序:哎,我沒法給你內(nèi)存了。
要是程序不檢查這個返回值,就默認繼續(xù)用這個0地址,那后面就會出問題。因為0地址這塊內(nèi)存是系統(tǒng)最重要的部分,應用程序是不能動的。
在老系統(tǒng)(比如DOS)里,亂動這塊內(nèi)存會直接死機;在現(xiàn)在的系統(tǒng)(比如Windows)里,系統(tǒng)會直接把你這個出錯的程序關掉,防止它搞崩潰整個系統(tǒng)。這時候就會提示寫內(nèi)存錯誤,地址是0x00000000。
這種情況一般是系統(tǒng)用久了,裝了一堆軟件(包括病毒),改了很多系統(tǒng)設置,導致內(nèi)存不夠或者系統(tǒng)函數(shù)版本不匹配。
第二,程序自己有BUG,用了無效的指針。
有時候程序想用一塊內(nèi)存,以為這地址是有效的,結果這地址其實早就被系統(tǒng)回收了。可能是程序忘了申請,也可能是之前釋放了這塊內(nèi)存但沒注意還在用。
一旦訪問已經(jīng)被系統(tǒng)回收的內(nèi)存,系統(tǒng)就會認為你在非法操作,直接把你程序干掉。這種情況下提示的錯誤地址不一定是0,而是別的隨機地址。
再說解決辦法:
1. 查病毒。
有些病毒亂改系統(tǒng)設置,會導致各種奇怪問題。用殺毒軟件掃一下,看看有沒有中招。
2. 系統(tǒng)修復或重裝。
如果系統(tǒng)文件被改亂了,可以試試系統(tǒng)還原,或者重新安裝系統(tǒng)。官方補丁也要記得打,有些系統(tǒng)BUG官方已經(jīng)修復了。
3. 更新軟件。
如果你用的是測試版或者試用版軟件,那出問題是正常的。盡量用穩(wěn)定版本,別貪新。
4. 檢查硬件。
如果剛重裝完系統(tǒng)就出問題,尤其是內(nèi)存錯誤,那可能是內(nèi)存條有問題。可以換條內(nèi)存試試。
總結這問題大部分是軟件引起的,但也不能完全排除硬件問題。先從軟件入手排查,實在不行再考慮硬件。希望對大家有幫助,有啥補充的歡迎評論區(qū)聊聊~