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
所以設(size_t *) A * P2 = 0
http://magicjackting.pixnet.net/blog/post/62423121
http://www.cplusplus.com/doc/oldtutorial/typecasting/
http://magicjackting.pixnet.net/blog/post/62423121
http://www.cplusplus.com/doc/oldtutorial/typecasting/
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];
...
假設38 bits會把size變40 (8的倍數)
沒有留言:
張貼留言