.因為=可利用空間表的初始狀態圖如所示
當用戶申請大小為的內存塊時因<<=但沒有大小為的塊只有大小為的塊故將的塊分裂成兩個大小為的塊其中大小為的一塊掛到可利用空間表上另一塊再分裂成兩個大小為的塊又將其中大小為的一塊掛到可利用空間表上另一塊再分裂成兩個大小為的塊一塊的塊掛到可利用空間表上另一塊分裂成兩個大小為的塊其中一塊掛到可利用空間表上另一塊分給用戶(地址—)如此下去最後每個用戶得到的存儲空間的起始地址如圖 個用戶分配所需要的存儲空間後可利用空間表的狀態如圖
在回收時因為給申請的用戶分配了其伙伴地址是在占用中不能合並只能掛到可利用空間表上在回收大小為的占用塊時其伙伴地址是也在占用回收大小為的占用塊時其伙伴地址是可以合並為大小的塊 掛到可利用空間表上回收個占用塊之後可利用空間表的狀態如圖
(注在圖和畫上了占用塊從原理上只有空閒塊才出現在可利用空間表中)
[] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/sjjg/201311/22805.html