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