#include
/*new
1.開闢記憶體
2.初始化
delete
1.釋放資源
2.釋放記憶體//
new1.開闢記憶體
operator new 系統
2.呼叫建構函式
delete
1.呼叫析構函式
2.釋放物件的記憶體
operator delete 系統
*//*
自主的記憶體管理機制 :通過對new,delete進行過載來實現。
*//*
系統允許new,delete進行過載
/template
class queue
~queue()
pfront = ptail = null;
}void push(t val)
bool emtpy()
void pop()
queueitem* pdelete = pfront -> pnext;
pfront -> pnext = pdelete -> pnext;
delete pdelete;
}t front()
return pfront -> pnext -> mdata;
}t back()
return ptail -> mdata;
}private:
class queueitem
void * operator new (size_t size)
pcur -> pnext = null;
}queueitem* rt = poor;//以頭刪的方式對外提供空間
poor = poor -> pnext;
return rt;
}void operator delete (void* ptr)
public:
t mdata;
queueitem* pnext;
};queueitem* pfront;
queueitem* ptail;
static queueitem* poor;
};template
typename queue::queueitem* queue::poor = null;
int main()
int rt = que.front();
que.pop();
std::cout << "rt:" << rt << std::endl;
return 0 ;
簡易記憶體池的實現
1.記憶體池的引入 實際運用當中,如果我們需要申請一塊空間,我們一般都會new一塊空間 在c語言裡會用到malloc 我們知道他們兩個的共同點就是在堆上申請空間,堆上的空間會比棧上的大一些 在windows的vs環境下,棧的預設大小是1mb,但是可以自己調整 所以我們可以自己去申請自己需要的大小 當...
簡易記憶體池的實現
參考 一書中的條款10 如果寫了operator new就要同時寫operator delete 寫了乙個簡易的記憶體池,說白了就是事先分配一塊記憶體空間作為記憶體池,每次new物件的時候,直接從這裡取記憶體,delete的時候將記憶體 到記憶體池中,很簡單,廢話就不說了,直接看 include s...
簡易記憶體池(物件池)的實現
pragma once include include include 物件池的實現 針對於乙個知道型別的物件 我們通過物件池 來比較普通向記憶體中申請空間 和我們直接向我們的記憶體池中申請空間的效能對比 template class t,size t initnum 10000 設定記憶體池中取出...