上一篇我們介紹了STL對象的構(gòu)造與析構(gòu),這篇介紹STL內(nèi)存的配置與釋放。

STL有兩級空間配置器,默認是使用第二級。第二級空間配置器會在某些情況下去調(diào)用第一級空間配置器??臻g配置器都是在allocate函數(shù)內(nèi)分配內(nèi)存,在deallocate函數(shù)內(nèi)釋放內(nèi)存。

 

第一級空間配置器

 

第一級配置器只是對malloc函數(shù)和free函數(shù)的簡單封裝,在allocate內(nèi)調(diào)用malloc,在deallocate內(nèi)調(diào)用free。同時第一級配置器的oom_malloc函數(shù),用來處理malloc失敗的情況。如下所示:

allocate對malloc函數(shù)簡單封裝 :

大學生就業(yè)培訓,高中生培訓,在職人員轉(zhuǎn)行培訓,企業(yè)團訓

static void *allocate(size_t n)
{          void *result = malloc(n);           if (NULL == result)
                    result = oom_malloc(n);           return result;
}

大學生就業(yè)培訓,高中生培訓,在職人員轉(zhuǎn)行培訓,企業(yè)團訓

 

deallocate對free函數(shù)簡單封裝 :

static void deallocate(void *p, size_t) { free(p); }

 

oom_malloc調(diào)用外部提供的malloc失敗處理函數(shù),然后重新試著再次調(diào)用malloc。重復執(zhí)行此過程,直到malloc成功為止 : 

網(wǎng)友評論