//OSMemFreeList是指向“空闲内存块结构体”指针,以下简写为list。
//你不要弄混,下句中这个list是全局变量,它和OS_MEM的成员list是重名的。
pmem=OSMemFreeList;
/*
这句就是获取“空闲内存块”,准备用它建立一个动态内存分区,
由于要使用这个“空闲内存块”,所以list指向的“空闲内存块”将不再是“空闲”的了。
那么就要把list重新指向另一个“空闲内存块”,也就是链表中的下一个。
这样程序其它地方才能再调用OSMemCreat获得一个空闲内存块来建立其它内存分区。
*/
/*要更新list,让它指向链表下一个“空闲内存块”,就是下面的代码要做的*/
if(OSMemFreeList!=(OS_MEM*)0){
OSMemFreeList=(OS_MEM*)OSMemFreeList->OSMemFreeList;
}
/*
按你的说法:
第一个list是全局变量,我们要把它更新,使其指向“空闲内存块链表”中下一个内存块。
而链表中下一个“空闲内存块”的地址,就是保存在 “当前准备要使用的的内存块” 的成员“list”里。
所以:
全局变量list = 当前空白内存块结构体中的list;
*/