/***
*/#include "mem.h"
mem_pool g_stmempool;
/***************************begin of memory pool section********************************/
/* @x : size of memory block (32 /64 /.../256....)
* @tpblk: ptr to mem_blk used as temporary storage
*/#define mempool_alloc(x, tpblk) bucket_alloc(&(g_stmempool.m_bucket##x), tpblk)
/* @x : size of memory block (32 /64 /.../256....)
* @pdata : ptr to data member of struct _memblk
*/#define mempool_free(x, pdata) bucket_free(&(g_stmempool.m_bucket##x), pdata)
/* @x : size of memory block (32 /64 /.../256....)
* @n : number of malloced memory blocks
*/#define mempool_init(x, n)
/* * @x : size of memory block (32 /64 /.../256....)
*/#define mempool_cleanup(x) bucket_cleanup(&(g_stmempool.m_bucket##x))
/*initialize the memory pool, should be called first*/
ulong mempoolinit()
/*finalize*/
void mempoolcleanup()
/*exported inte***ce to allocate memory*/
void *memalloc(ulong ulsize)
sem_unlock(&g_stmempool.sem);
return p;
}/*exported inte***ce to free memory*/
void memfree(void *p)
sem_unlock(&g_stmempool.sem);
return;
}/***************************end of memory pool section********************************/
記憶體池 簡單的記憶體池的實現
當頻繁地用malloc申請記憶體,然後再用free釋放記憶體時,會存在兩個主要問題。第乙個問題是頻繁的分配釋放記憶體可能導致系統記憶體碎片過多 第二個問題是分配釋放記憶體花費的時間可能比較多 這個問題不太明顯 這個時候我們就可以考慮使用記憶體池了。最樸素的記憶體池思想就是,首先你向系統申請一塊很大的...
記憶體池實現
記憶體池實現 話說一直想找乙個別人寫好的使用,可惜沒什麼人會拿這小東西發布,只好自寫乙個。1.多級鍊錶分配池 我不知道這種設計的具體學名是什麼,這部分的內容也許你去看 stl原始碼分析 的有關章節更合適一些,這裡我只能用我粗陋的語言描述一下。記憶體池,完全可以從字面上理解為從池子裡申請記憶體,釋放的...
簡易記憶體池(物件池)的實現
pragma once include include include 物件池的實現 針對於乙個知道型別的物件 我們通過物件池 來比較普通向記憶體中申請空間 和我們直接向我們的記憶體池中申請空間的效能對比 template class t,size t initnum 10000 設定記憶體池中取出...