|
內(nèi)存的malloc和free結(jié)構(gòu)體:
接上文,內(nèi)存也需要像FAT32文件這樣操作。動態(tài)分配這個空間。
那么,一個什么樣的結(jié)構(gòu),可以滿足內(nèi)存的動態(tài)分配呢?
struct RAM{
int *Pbefore;
int *Pstart;
int lenth;
int *Pnext;
};
int *Pstart:空白內(nèi)存的首地址
int lenth:空白內(nèi)存的長度
int *Pnext:下一個空白內(nèi)存地址
int *Pbefore:上一個空白內(nèi)存地址
動態(tài)分配RAM的過程:
1:順著鏈表一個方向,尋找大于申請空間的RAM
2:找到之后,將Pstart = Pstart + lenth;//修改剩余空間的指針
3:將lenth =lenth - Req_lenth; //剩余的空間
4:同時回朔上一個空白地址結(jié)構(gòu),將其Pnext = Pstart; //修改上一個RAM的Pnext指向地址
4:返回最早的地址。
這只是一個最簡單的模型:在這個模型里面,我們只要一找到有空白空間,就進(jìn)行分配
其實(shí),是不是可以再找找看,有沒有更合適的空間,剛剛比需要的空間大一點(diǎn)點(diǎn),這樣,內(nèi)存的使用是不是更有效果呢?!
|
|