記憶體池是一種可以提高程式效率的一種途徑,記憶體是提高的地方就是一次申請一塊較大的記憶體,在你後面使用的時候就直接在申請好的記憶體中申請使用即可,省去了每次單獨申請空間時間。也避免了記憶體碎片,當申請的記憶體足夠大,在使用的時候函式中申請記憶體遲裡的記憶體時候,如果申請的空間牛才能沒有用完,剩下的記憶體會通過自有鍊錶鏈結起來,已備後面使用,在程式最後析構pool物件的時候會呼叫析構函式釋放記憶體池所有空間。下面我們先巨集觀來看看記憶體池的使用和大概框架:
//pool是在boost庫里,需要引入boost庫標頭檔案,下面通過使用庫里的pool
#include
#include
#include
#include
#include
#include
using
namespace
std;
using
namespace boost;
int main()
*/int *q = (int*)pl.malloc();
*q = 10;
cout
<<*qint *p = (int *)pl.ordered_malloc(10);//看上面的就是記憶體池建構函式,就能明白為什麼能申請十個空間
for(int i = 0; i<10; ++i)
for(int i=0; i<10; ++i)
cout
return
0;}
這裡我們對pool的大致框架進行簡單的分析,如下:
template
//useralloctor是使用者定義的記憶體快取器,使用者也可以不給
class pool
;
這裡的申請空間和釋放空間和我們在c語言中的malloc用法一樣,這裡我們來看看chunk函式的機制,也是pool核心管理申請到的記憶體機制,後面我們對boost庫里的pool**進行詳細的分析,在這裡主要講解pool大致使用和框架。 boost 記憶體池
1.什麼是記憶體池 池 是在計算機技術中經常使用的一種設計模式,其內涵在於 將程式中需要經常使用的核心資源先申請出來,放到乙個池內,由程式自己管理,這樣可以提高資源的使用效率,也可以保證本程式占有的資源數量。經常使用的池技術包括記憶體池 執行緒池和連線池等,其中尤以記憶體池和執行緒池使用最多。記憶體...
測試boost記憶體池
最近測試了一下boost執行緒池,向大家公布一下測試結果,本測試在單執行緒環境下進行,boost pool實用單執行緒記憶體方法 boost singleton pool適用多執行緒記憶體訪問 測試 如下 struct student void heapallocate for int j 0 j ...
boost的pool記憶體池
參考 boost程式庫開發完全指南 pool func eg.h pragma once include includeusing namespace boost void eg void eg object pool void eg construct void eg singleton pool...