網頁

2017年10月26日 星期四

20171026 資結程設

begin是管理記憶體空間的開頭
end是管理記憶體空間的尾
new size_t的倍數
假設A是200 bits
P1=new A
P2=new A[5]
P3=new A[5]
delete []P2

MemMgr的_activeBlock
new一個P2假設產生208 bits
_ptr指向8個bits前面
P2指向200前面

recycle list(RL)
recycle會先找記憶體容量相同的
first要先用型態A的pointer P2強迫轉型成size_t 把前面8 bits減掉還要把值設成0
first指向8個bits後面的位置
delete []P2
delete []P3
前面8 bits用P2指
first=P3指向下一個後面要刪除的200 bits

假設delete []P5 (261 bits)
空間只有255 >end
再要一個_activeBlock

vector<MemTestObj*> _objList;
vector<MemTestObj*> _arrList;deleteObj

delete _objList[ix];
...

_objList[i]? 'o' : 'x' (如果是NULL會印o)

#define toSizeT(t)
假設38 bits會把size變40 (8的倍數)

沒有留言:

張貼留言