簡易記憶體池

2021-10-06 21:23:04 字數 1264 閱讀 6241

#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 設定記憶體池中取出...