關於boost庫里的記憶體池pool

2021-08-02 18:29:37 字數 986 閱讀 9799

記憶體池是一種可以提高程式效率的一種途徑,記憶體是提高的地方就是一次申請一塊較大的記憶體,在你後面使用的時候就直接在申請好的記憶體中申請使用即可,省去了每次單獨申請空間時間。也避免了記憶體碎片,當申請的記憶體足夠大,在使用的時候函式中申請記憶體遲裡的記憶體時候,如果申請的空間牛才能沒有用完,剩下的記憶體會通過自有鍊錶鏈結起來,已備後面使用,在程式最後析構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...