今天拿到一個(gè)project 在看。其中的問題就在于多次申請與釋放內(nèi)存,導(dǎo)致到后期malloc會(huì)失敗。
最方便的解決辦法就是做一個(gè)內(nèi)存管理層,接管系統(tǒng)的內(nèi)存調(diào)用函數(shù),使用內(nèi)存管理的方式,一次申請,一次釋放。
有兩種做法,一個(gè)是用一個(gè)list來維護(hù)全部的數(shù)據(jù)
另外一個(gè)是用兩個(gè)list來維護(hù),其中一個(gè)是被應(yīng)用程序使用的內(nèi)存區(qū),其中一個(gè)是已經(jīng)申請,尚未使用或者被應(yīng)用程序釋放的區(qū)塊。
freelist usedlist
list 大小固定(對于目前的應(yīng)用場合)