5 回答

TA貢獻(xiàn)6條經(jīng)驗(yàn) 獲得超5個贊
沒看到這里是while(1)嗎,也就是這個程序會一直循環(huán)下去,那么為什么會退出呢?
這就要看malloc()這個函數(shù)了,這是一個動態(tài)申請內(nèi)存空間的函數(shù),這里把它放在while(1)死循環(huán)里,就會一直循環(huán)申請一個字節(jié)(因?yàn)檫@里寫的是申請一個字節(jié))內(nèi)存空間,這個函數(shù)申請的空間是在堆當(dāng)中申請的,那么請問堆的空間能有多大呢?是不是遲早會被申請完?對的吧?遲早會將空間申請完,那么此時,就是我們常說的內(nèi)存泄漏,最后內(nèi)存分配完了,但是就會退出嗎?最后會在非法訪問內(nèi)存時異常退出。
那么所以我們要養(yǎng)成好習(xí)慣,一是申請內(nèi)存之后一點(diǎn)要檢查是否申請成功,二是malloc之后,一定要free掉申請的內(nèi)存。

TA貢獻(xiàn)17條經(jīng)驗(yàn) 獲得超13個贊
malloc函數(shù)的作用是取一個空的內(nèi)存,返回一個指針。這個循環(huán)可能導(dǎo)致無限的取內(nèi)存并寫入數(shù)據(jù)0的ascii碼。最后系統(tǒng)內(nèi)存不足而崩潰。
- 5 回答
- 0 關(guān)注
- 1680 瀏覽
添加回答
舉報(bào)