Memory Pool C 實作

基本介紹

C 在 run time 期間可以使用 malloc 來動態取得記憶體

1
2
3
4
5
6
7
8
9
10
#define N 10000
int main()
{
int* p = malloc(sizeof(int)); //allocate a pointer to an integer
int* pa = malloc(sizeof(int) * N); //allocate an array with N integers
/*statement*/
free(p);
free(pa);
return 0;
}

不過當程式執行時,如果一直反覆 malloc 和 free 記憶體區塊。

會導致記憶體的碎片問題,碎片一多可使用的記憶體就變少

最後產生 memory leak,而 memory pool 的想法是

預先就 alloc 一個大的記憶體區塊,而程式在 run time 期間

就只會對此區塊的記憶體做分配 (allocate)、使用 (access)、歸還 (free)

這樣就不會有記憶體破碎的問題

參考

參考